我有一个数据框:
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
但是我收到了一个错误。
感谢您的帮助。
答案 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