R语言:indx值存在于无效列表时修改dataframe的valid列值为FALSE
R语言根据无效索引列表修改dataframe对应行取值的实现方法
基础R实现(无需额外安装包)
直接使用R内置的%in%匹配运算符即可一行完成需求:
# 匹配indx在无效列表中的行,将对应valid列设为FALSE df$valid[df$indx %in% invalid_list] <- FALSE
如果担心两个因子变量的层级不匹配导致判断错误,可以统一转为字符型后再判断,兼容性更强:
df$valid[as.character(df$indx) %in% as.character(invalid_list)] <- FALSE
tidyverse/dplyr 实现
如果你习惯使用tidyverse生态的语法,可以用mutate函数配合逻辑判断完成修改:
library(dplyr) df <- df %>% mutate(valid = if_else(indx %in% invalid_list, FALSE, valid))
执行完上述任意一种方法后,即可得到预期输出结果:
indx data valid 1 A01 6.534581 TRUE 2 A02 4.996695 FALSE 3 A03 3.328804 TRUE 4 B01 2.342048 TRUE 5 B02 9.928362 TRUE 6 B03 5.484037 FALSE
内容的提问来源于stack exchange,提问作者agf1997
相关产品推荐
相关产品推荐

