R中的行明矩阵运算

dan*_*kas 6 r data.table

最近我遇到了data.table包裹.我仍然不确定如何进行行方式矩阵运算.它原本打算处理此类操作吗?例如,data.table等同于apply(M,1,fun)什么?

fun应该采取的向量作为参数,例如mean,median,或mad.

Chr*_*h_J 4

我认为您正在寻找:=操作员(请参阅?':=')。下面是一个简短的示例以及与该函数的比较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
Run Code Online (Sandbox Code Playgroud)

发布我的答案后,我不再确定这是否是您正在寻找的。我希望如此,如果没有,请提供更多详细信息(例如,您是否有许多想要应用函数的列,而不仅仅是我示例中的两列?)。不管怎样,你可能会对这篇文章感兴趣。