Я создал следующую простую функцию:
fillampenv <- function(samples, samprate, rise, fall){
# Create output vector
v <- vector("numeric", samples)
# Fill output vector
v <- c(seq(0, 1, length = rise * samprate),
seq(1, 1, length = (((samples/samprate) -
(rise + fall)) * samprate) -1),
seq(1, 0, length = fall * samprate))
return(v)
}
Которую я хотел бы вызвать для каждой строки фрейма данных:
df <- structure(list(samples = c(17640, 17640, 17640, 17640, 17640), samprate = c(44100, 44100, 44100, 44100, 44100), rise = c(0.75, 0.75, 0.75, 0.75, 0.75), fall = c(0.3, 0.3, 0.3, 0.3, 0.3)), class = "data.frame", row.names = c(NA, -5L))
Однако, когда я попытался сделайте это, используя следующее (которое работает для меня с другими функциями, которые я сделал):
ampenvs <- mapply(fillampenv,
samples = df$samples,
samprate = df$samprate,
rise = df$rise,
fall = df$fall)
Я получаю сообщение об ошибке:
Error in seq.default(1, 1, length = (((samples/samprate) - (rise + fall)) * :
'length.out' must be a non-negative number
Есть идеи, почему? Я изо всех сил пытаюсь понять, почему он не работает, в частности, с этой функцией (в то время как другие работают нормально).