我正在寻找一种解决我的问题的简单方法(肯定存在)。
我有以下示例数据库:
a b c comp
10 20 30 25
15 30 40 20
现在,我需要找到一个代码,该代码将遍历列a
,b
和c
,并将替换任何大于其值的单元格。该特定行的comp列。
因此,在这种情况下,结果将为:
a b c comp
10 20 NA 25
15 NA NA 20
有没有解决嵌套问题的智能解决方案?
答案 0 :(得分:2)
这应该归结为单个向量化的比较,因为您要对n
行和n
长度向量进行操作:
sel <- c("a","b","c")
dat[sel][dat[sel] > dat$comp] <- NA
dat
# a b c comp
#1 10 20 NA 25
#2 15 NA NA 20
答案 1 :(得分:0)
使用data.table
可以尝试
library(data.table)
setDT(df)[,lapply(.SD, function(x) ifelse(x > comp, NA, x))]