【问题标题】:How to change column elements of a matrix for each row without creating a loop in R如何在不在 R 中创建循环的情况下更改每行矩阵的列元素
【发布时间】:2021-07-27 21:24:39
【问题描述】:

我有一个矩阵,我想根据向量将列元素从 0 更改为 1,反之亦然。第一行的第一列应该切换,第二行的第三列也应该翻转。 EG

mat <- matrix(c(0,1,0,0,1,0),2,3)
ind <- c(1,3)

mat1 <- matrix(c(1,1,0,0,1,1),2,3)

我想从 mat 中获取 mat1,

谢谢

【问题讨论】:

  • 由于矩阵有 2 行,因此索引向量的长度应为 2

标签: r loops matrix


【解决方案1】:

只需使用row/column 索引

mat[cbind(seq_len(nrow(mat)), ind)] <- 1

或者如果我们不想修改原始对象,使用replace

mat1 <- replace(mat, cbind(seq_len(nrow(mat)), ind), 1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    • 2020-01-18
    • 1970-01-01
    • 2016-07-29
    • 2019-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多