R中的行明矩阵运算

时间:2012-03-05 09:52:02

标签: r data.table

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

fun应将矢量作为参数,例如meanmedianmad

1 个答案:

答案 0 :(得分: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

在发布我的答案后,我不再确定这是否是您正在寻找的。我希望它能做到,如果它没有提供更多细节(例如,你想要应用函数的列有多少,而不仅仅是我的例子中的两个?)。无论如何,这个SO post可能对你很感兴趣。