R应用函数来计算数据帧的日志差异

R apply function to calculate log diff of a dataframe

我有一个数据框:

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 

但是我得到一个错误。

感谢您的帮助。

匿名函数 function(x) returns 该列的值而不是它的索引,所以我们必须在 'x' [=16= 上取 log ]

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

取数据集log后的另一个选项是colDiffs

library(matrixStats)
r2 <- colDiffs(log(as.matrix(df1)))
all.equal(r1, r2, check.attributes=FALSE)
#[1] TRUE