我有一个大型数据框(800 个变量的 40000 个观察值),并希望使用类似于点积的东西对每个观察值的一系列列进行操作。这就是我实现它的方式:
matrixattempt <- as.matrix(dframe)
takerow <- function(k) {as.vector(matrixattempt[k,])}
takedot0 <- function(k) {sqrt(sum(data0averrow * takerow(k)[2:785]))}
for (k in 1:40000){
print(k)
dframe$dot0aver[k]<-takedot0(k)
}
打印只是为了跟踪正在发生的事情。 data0averrow是一个数字向量,与takerow(k)[2:785]大小相同,已预先定义。
这是正在运行的,并且从一些测试中可以正确运行,但是速度很慢。
我搜索了列子集的点积,发现了这个问题,但不知道如何将它应用到我的设置中。ddply 听起来它应该工作得更快(尽管我不想进行拆分,并且必须使用与引用的提问者相同的定义 ID 技巧)。任何见解/提示?