Можно ли использовать аргумент grepl, ссылаясь на список значений, возможно, используя оператор% in%? Я хочу взять данные ниже, и если у животного есть "собака" или "кошка", я хочу вернуть определенное значение, скажем, "сохранить"; если у него нет "собаки" или "кошки", я хочу вернуть "отбросить".
data <- data.frame(animal = sample(c("cat","dog","bird", 'doggy','kittycat'), 50, replace = T))
Теперь, если бы я просто сделал это, строго сопоставив значения, скажем, "cat" и "dog", я мог бы использовать следующий подход:
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, используя вектор символов с несколькими шаблонами