簡體   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