我有一个数据框,我想添加另一列,这是涉及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