我有一個數據框,我想添加另一列,這是涉及3個其他列的計算結果。我現在使用的方法似乎很慢。有沒有更好的方法來做同樣的事情?這是我正在使用的方法。R:在數據幀的多列上執行行計算的最快方法
library(bitops)
GetRes<-function(A, B, C){
tagU <- bitShiftR((A*C), 4)
tagV <- bitShiftR(B, 2)
x<-tagU %% 2
y<-tagV %% 4
res<-(2*x + y) %% 4
return(res)
}
df <- data.frame(id=letters[1:3],val0=1:3,val1=4:6,val2=7:9)
apply(df, 1, function(x) GetRes(x[2], x[3], x[4]))
我的數據幀非常大,並且需要很長時間才能完成此計算。有人建議我做得更好嗎?
謝謝。
+1,我不知道bitShiftL是矢量化函數 – 2013-04-24 06:54:24