最近我遇到了data.table
包裹。我仍然不确定如何进行逐行矩阵运算。它最初是为了处理此类操作吗?例如, data.table 相当于apply(M,1,fun)
什么?
fun
应将向量作为参数,例如mean
,median
或mad
.
最近我遇到了data.table
包裹。我仍然不确定如何进行逐行矩阵运算。它最初是为了处理此类操作吗?例如, data.table 相当于apply(M,1,fun)
什么?
fun
应将向量作为参数,例如mean
,median
或mad
.
我认为您正在寻找:=
操作员(请参阅 参考资料?':='
)。下面是一个简短的示例和与mapply
函数的比较(我希望我mapply
正确应用该函数;我现在只使用 data.tables,所以对此没有任何承诺;但是,在我看来,data.table 方式仍然很快容易记忆):
library(data.table)
> df <- data.frame(ID = 1:1e6,
+ B = rnorm(1e6),
+ C = rnorm(1e6))
> system.time(x <- mapply(foo, df$B, df$C))
user system elapsed
4.32 0.04 4.38
> DT <- as.data.table(df)
> system.time(DT[, D := foo(B, C)])
user system elapsed
0.02 0.00 0.02
> all.equal(x, DT[, D])
[1] TRUE
发布我的答案后,我不确定这是否是您正在寻找的。我希望是这样,如果不是,请提供更多详细信息(例如,您是否有许多列要应用函数,而不仅仅是我的示例中的两个?)。无论如何,这篇SO 帖子可能会让您感兴趣。