【问题标题】:Matrix levels extraction矩阵级别提取
【发布时间】:2015-06-01 14:42:00
【问题描述】:

我正在使用的矩阵是二进制的并且非常大:2000 x 2.1 亿。

对于特定的列,我需要检查设置为 1 的值的比例。目前我正在做(ind 是应该检查的列的索引,mat 是矩阵,w 是结果被存储):

for(i in 1:length(ind){
which(mat[,ind[i]==1)->k
length(k)/2000->w[i,1]
}

mat 已经是一个大矩阵,但它已经需要 20-30 秒,我需要处理更大的矩阵。如何加快此操作?

【问题讨论】:

    标签: r matrix dataframe


    【解决方案1】:

    试试这个:

    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
    

    【讨论】:

      猜你喜欢
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      相关资源
      最近更新 更多