如何将与第一列匹配的第二列设为NA?并生成可迭代向量
解决方法
1. 批量修改表格列值
不用写循环,R的向量化操作就能搞定你的需求——把newcolumn和newcolumn2值相等的行,将newcolumn2替换成NA。给你两种简单方法:
方法一:逻辑索引直接赋值
# 定位两列值相等的行,把对应newcolumn2设为NA DATA$newcolumn2[DATA$newcolumn == DATA$newcolumn2] <- NA
方法二:用ifelse逐行判断
DATA$newcolumn2 <- ifelse(DATA$newcolumn == DATA$newcolumn2, NA, DATA$newcolumn2)
运行后就能得到你要的表格:
| newcolumn | newcolumn2 |
|---|---|
| Cell A | NA |
| Cell 3 | Cell 4 |
| Cell X | NA |
2. 生成可迭代的行索引向量
完全可以生成c(1,3)这类向量,比如要提取两列值相等的行号,直接用which()函数:
# 获取目标行的索引向量 target_rows <- which(DATA$newcolumn == DATA$newcolumn2) # 对应你的示例数据,结果就是c(1,3),可以直接用来迭代
原代码无效的原因
你用了all(DATA$newcolumn == DATA$newcolumn2),这个函数是判断整个列所有行是否都相等,返回的是一个单一的TRUE或FALSE,而不是逐行的逻辑判断结果。所以ifelse只会对整个列做一次操作,没法实现逐行替换,这就是代码失效的原因。
内容的提问来源于stack exchange,提问作者Antonio
相关产品推荐
相关产品推荐

