Я пытаюсь провести l oop по вектору шаблонов / строк, чтобы обе строки соответствовали другому столбцу, и назначить результаты столбцу с тем же именем, что и шаблон, по которому выполняется поиск. Простой пример ниже.
Я знаю, что этот пример тривиален, но он охватывает минимальный случай, который приводит к ошибке, которую я не могу устранить.
> library(rlang)
> library(stringr)
> library(dplyr)
> set.seed(5)
> df <- data.frame(
+ groupA = sample(x = LETTERS[1:6], size = 20, replace = TRUE),
+ id_col = 1:20
+ )
>
> mycols <- c('A','C','D')
>
> dfmatches <-
+ lapply(mycols, function(icol) {
+ data.frame(!!icol := grepl(pattern = icol, x = df$groupA))
+ }) %>%
+ cbind.data.frame()
Это дает мне ошибку:
Error: `:=` can only be used within a quasiquoted argument
Желаемый вывод будет data.frame, как показано ниже:
> dfmatches
A C D
1 FALSE FALSE FALSE
2 FALSE FALSE FALSE
3 FALSE FALSE FALSE
4 FALSE FALSE FALSE
5 TRUE FALSE FALSE
6 FALSE FALSE FALSE
7 FALSE FALSE TRUE
8 FALSE FALSE FALSE
9 FALSE FALSE FALSE
10 TRUE FALSE FALSE
11 FALSE FALSE FALSE
12 FALSE TRUE FALSE
13 FALSE FALSE FALSE
14 FALSE FALSE TRUE
15 FALSE FALSE FALSE
16 FALSE FALSE FALSE
17 FALSE TRUE FALSE
18 FALSE FALSE FALSE
19 FALSE FALSE TRUE
20 FALSE FALSE FALSE
Я пытался множественные варианты, использующие {{}}
или !! rlang::sym()
et c, но не могут понять правильный синтаксис для этого.