Привет, У меня есть следующий код.Как передать несбалансированные аргументы в mapply
Он рассчитывает процентную разницу между двумя периодами. В течение первого периода функция возвращает NA, поскольку изменений нет.
Я хочу заменить следующий код на mapply и передать два аргумента fn.pc.
ts <- c(12, 14, 15, 17, 12, 8, 13, 16, 20)
fn.pc <- function(i) {
if (i == 1) NA else (ts[i] - ts[i-1])/ts[i-1]
}
sapply(seq_along(tsVector), fn.pc)
Например, функция подписи выше, будут заменены:
fn.pc <- function(i, ts) {...
И тогда эта функция будет вызвана mapply использовать что-то вроде следующего:
mapply(fn.pc, seq_along(ts.vector), ts.vector)
Но я не может заставить эту идею работать. Я думаю, это связано с тем, что длины двух аргументов различны.
Я как-то могу это работать. Надеюсь, это понятно. Немного сложно объяснить.
почему вы хотите достичь? вам не нужно приклеивать туда ... sapply достаточно. –
sapply() уверен, что работает с приведенным выше примером. Но как насчет того, когда у меня много разных временных рядов. ts1 <- (1,4,5); ts2 <- (42, 44, 50) Я хотел бы использовать одно и то же определение функции для множества разных входных аргументов. – markthekoala
Я обновил свой ответ. –