在R中使用基于TRUE / FALSE矩阵的矩阵进行子摄取?

时间:2015-10-13 12:27:33

标签: r

我有一个名为originaldata的真值和假值矩阵。第二个X测量矩阵称为finalmatrix。为了在最终矩阵中仅保留originaldata中为TRUE的值并将其余值设置为0,我将执行以下循环

 for (row in 1:sqrt(length(finalmatrix)))
 {
     for (col in 1:sqrt(length(finalmatrix))) 
     {
      if (originaldata[row,col] == FALSE) {
        finalmatrix[row,col] <- 0
      }
   }
 }

但这很慢,尤其是大矩阵。有没有更简单的方法来做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以直接将所有假元素设置为零。

finalmatrix[!originaldata] = 0

答案 1 :(得分:1)

您可以将两个矩阵相乘,FALSEoriginaldata的所有值都将变为零。

finalmatrix <- finalmatrix * originaldata