R 应用并从前一行获取值

Tra*_*iew 4 r matrix cells apply

我想使用前一行值进行涉及当前行的计算。矩阵看起来像:

      A   B
[1,]  1   2
[2,]  2   3
[3,]  3   4 
[4,]  4   5
[5,]  5   6
Run Code Online (Sandbox Code Playgroud)

我想做以下操作:(cell[i]/cell[i-1])-1,本质上计算从当前行到前一行(不包括第一行)的百分比变化(-1 到 1)。

输出应如下所示:

         C      D
[1,]    NA     NA
[2,]   1.0    0.5
[3,]   0.5   0.33 
[4,]  0.33   0.25
[5,]  0.25   0.20
Run Code Online (Sandbox Code Playgroud)

这可以使用 for 循环轻松完成,但我正在处理大型数据集,因此我想使用 apply(或其他内置函数)来提高性能和更清晰的代码。

到目前为止,我想出了:

test.perc <- sapply(test, function(x,y) x-x[y])
Run Code Online (Sandbox Code Playgroud)

但它不起作用。

有任何想法吗?

谢谢。

Jam*_*ing 5

df/rbind(c(NA,NA), df[-nrow(df),]) - 1
Run Code Online (Sandbox Code Playgroud)

将工作。