如何使用which()函数替换R语言矩阵中特定条件的元素?
R矩阵中修改指定条件元素的方法
首先定义示例矩阵:
m <- 3*matrix(1:12, 3, 4)
直接用逻辑索引修改(最简便)
不需要借助which(),直接通过逻辑条件定位元素并赋值:
m[m > 25] <- 100
用which()配合整数索引修改
如果一定要用which()获取整数索引,直接赋值即可:
# 获取大于25的元素整数索引 idx <- which(m > 25) # 修改对应元素为100 m[idx] <- 100
用which()配合矩阵型索引修改
当使用arr.ind = TRUE返回行列矩阵索引时,同样可以直接用于赋值:
# 获取行列形式的索引矩阵 idx_mat <- which(m > 25, arr.ind = TRUE) # 修改对应元素为100 m[idx_mat] <- 100
如果之前尝试m[which(m > 25)] <- 100失败,大概率是操作时漏写了赋值部分(即只执行了m[which(m > 25)]而没有加<- 100),或者矩阵被意外设置为只读状态(这种情况极少,默认创建的矩阵都是可修改的)。
内容的提问来源于stack exchange,提问作者sSoGah
相关产品推荐
相关产品推荐

