【发布时间】:2015-07-07 09:19:04
【问题描述】:
您好,我的以下代码正在运行。
它计算两个时期之间的百分比差异。对于第一个周期,函数返回 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)
但我无法让这个想法发挥作用。我认为这是因为两个参数的长度不同。
我有任何方法可以让它工作。希望这很清楚。有点难以解释。
【问题讨论】:
-
为什么要实现?你不需要那里 mapply ... sapply 就足够了。
-
sapply() 确实适用于上面发布的示例。但是当我有许多不同的时间序列时呢? ts1
-
我更新了我的答案。