矩阵水平提取

时间:2015-06-01 14:42:00

标签: r matrix dataframe

我工作的矩阵是二进制的,非常大: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秒,我需要处理更大的矩阵。我怎样才能加快这项操作?

1 个答案:

答案 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