【问题标题】:Assigning values to matrix in R - values go in every row at different columns将值分配给 R 中的矩阵 - 值在不同列的每一行中
【发布时间】:2015-03-29 10:13:56
【问题描述】:
nr <- 2
nc <- 4
rxc <- nr*nc
m1 <- Matrix(0, nrow = nr, ncol = rxc, sparse = TRUE)
col <- 0
for(r in 1:nr){
  m1[r,((r-1)*nc+1) :(((r-1)*nc+1)+3)] <- 1
  col <- col+1
}

期望的输出:

[1,] 1 1 1 1 . . . .
[2,] . . . .    1 1 1 1

这可行,但它非常慢,因为我必须为 1000 万行执行此操作。在 R 中有没有更好的方法?

【问题讨论】:

    标签: r loops matrix vector


    【解决方案1】:

    使用矩阵索引,它使用行/列的两列矩阵来确定哪些单元格被更改:

    m1[cbind(rep(1:nr,each=nc),1:(nr*nc))] <- 1
    m1
    #2 x 8 sparse Matrix of class "dgCMatrix"
    #                    
    #[1,] 1 1 1 1 . . . .
    #[2,] . . . . 1 1 1 1
    

    【讨论】:

      猜你喜欢
      • 2015-05-09
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-14
      • 1970-01-01
      • 2022-08-09
      相关资源
      最近更新 更多