R apply函数用于计算数据帧的log diff

时间:2016-12-11 14:02:32

标签: r apply

我有一个数据框:

df1 <- data.frame(a=runif(10),b=runif(10),c=runif(10))
df1

然后我尝试计算数据框中所有列的日志差异

df2 <- apply(df1,2,function(x) diff(log(df1[,x]), lag=1))
df2 

但是我收到了一个错误。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

匿名函数function(x)会返回该列的值而不是其索引,因此我们必须在&#39; x&#39;上使用log

r1 <-apply(df1,2,function(x) diff(log(x), lag=1))

在获取数据集的colDiffs

后,另一个选项是log
library(matrixStats)
r2 <- colDiffs(log(as.matrix(df1)))
all.equal(r1, r2, check.attributes=FALSE)
#[1] TRUE