我有17个文件支持的大矩阵对象(维度为10985 x 52598,每个大小为4.3GB),我想计算逐元素平均值。结果可以存储在另一个大矩阵(gcm.res.outputM)中。
biganalytics :: apply()不起作用,因为MARGIN只能设置为1或2。我尝试使用两个循环,如下所示
gcm.res.outputM <- filebacked.big.matrix(10958, 52598, separated = FALSE, backingfile = "gcm.res.outputM.bin", backingpath = NULL, descriptorfile = "gcm.res.outputM.desc", binarydescriptor = FALSE)
for(i in 1:10958){
for(j in 1:52598){
t <- rbind(gcm.res.output1[i,j], gcm.res.output2[i,j],gcm.res.output3[i,j], gcm.res.output4[i,j],
gcm.res.output5[i,j], gcm.res.output6[i,j],gcm.res.output7[i,j], gcm.res.output8[i,j],
gcm.res.output9[i,j], gcm.res.output10[i,j],gcm.res.output11[i,j], gcm.res.output12[i,j],
gcm.res.output13[i,j], gcm.res.output14[i,j],gcm.res.output15[i,j], gcm.res.output16[i,j],
gcm.res.output17[i,j])
tM <- apply(t, 2, mean, na.rm = TRUE)
gcm.res.outputM[i,j] <- tM
}
}
这个计算大约需要每行i1.5分钟,因此需要运行约11天。
有没有任何关于如何加快这个计算的想法?我正在使用一台64x Windows10机器,具有16GB的RAM。
谢谢!
data.table
包可能会有所帮助。 - Tung