dplyr: case_when предупреждение: аргумент 'pattern' имеет продольное значение> 1 - PullRequest
1 голос
/ 25 апреля 2020

У меня есть вектор продольного> 1, и при выполнении следующего кода я получаю:

Warning message:
In grepl(uei_secciones_sheet$ga_page, pagePath, ignore.case = TRUE) :
  the argument 'pattern' has longitud > 1, only the first element will be applied.

Мне нужно: поместить «Салуд» в новый столбец secciones, когда элементы в df$pagePath содержит любой из элементов where_to_look_up$values_to_match.

Мой код:

df<- df %>%
  mutate(
    secciones = case_when(
      grepl(where_to_look_up$values_to_match, pagePath, ignore.case = TRUE) ~ "Salud"
    )
  )

1 Ответ

1 голос
/ 25 апреля 2020

Мы могли бы paste 'values_to_match' в виде одной строки с collapse как | как pattern в grep не векторизовано. Либо мы l oop над patterns, а затем делаем reduce или простые collapse векторы в одну строку с |

library(dplyr)
df %>%
   mutate(
     secciones = case_when(
          grepl(paste(where_to_look_up$values_to_match, collapse="|"), 
         pagePath, ignore.case = TRUE) ~ "Salud"
     )
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...