我工作的矩阵是二进制的,非常大:2000 x 210百万。
对于特定的列,我需要检查设置为1的值的比例。目前我正在做(ind
是应该检查它的列的索引,mat
是矩阵,{ {1}}是存储结果的地方):
w
for(i in 1:length(ind){
which(mat[,ind[i]==1)->k
length(k)/2000->w[i,1]
}
已经是一个很大的矩阵,但它已经需要20-30秒,我需要处理更大的矩阵。我怎样才能加快这项操作?
答案 0 :(得分:3)
试试这个:
colMeans(mat)
mat <- matrix(sample(c(0,1), 1000, replace=T), 100)
w <- colMeans(mat)
w
[1] 0.51 0.47 0.43 0.54 0.50 0.47 0.48 0.50 0.49 0.55
用户定义的列:
means.func <- function(m, ind) {
colMeans(m[,ind])
}
means.func(mat, 3:10)
[1] 0.43 0.54 0.50 0.47 0.48 0.50 0.49 0.55