繁体   English   中英

R中的逐行矩阵运算

[英]Row wise matrix operations in R

最近我遇到了data.table包。 我仍然不确定如何进行逐行矩阵运算。 它最初是为了处理此类操作吗? 例如,什么是 data.table 相当于apply(M,1,fun)

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

我认为您正在寻找:=运算符(请参阅?':=' )。 下面是一个简短的示例和与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 帖子可能会让您感兴趣。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM