首页 > 解决方案 > 如何在不在 R 中创建循环的情况下更改每行矩阵的列元素

问题描述

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

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)

我想从垫子上得到垫子,

谢谢

标签: rloopsmatrix

解决方案


只需使用row/column索引

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

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

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

推荐阅读