是否可以在引用值列表时使用grepl参数,也许使用 %in% 运算符?我想获取下面的数据,如果动物名称中有“狗”或“猫”,我想返回一个特定的值,比如“keep”;如果它没有“狗”或“猫”,我想返回“丢弃”。
data <- data.frame(animal = sample(c("cat","dog","bird", 'doggy','kittycat'), 50, replace = T))
现在,如果我只是通过严格匹配值来做到这一点,比如“猫”和“狗”,我可以使用以下方法:
matches <- c("cat","dog")
data$keep <- ifelse(data$animal %in% matches, "Keep", "Discard")
但使用 grep 或 grepl 仅指列表中的第一个参数:
data$keep <- ifelse(grepl(matches, data$animal), "Keep","Discard")
返回
Warning message:
In grepl(matches, data$animal) :
argument 'pattern' has length > 1 and only the first element will be used
注意,我在搜索中看到了这个线程,但这似乎不起作用: grep using a character vector with multiple patterns