Использование dklyr enquo для доступа к столбцам таблицы Spark через sparklyr
Я хотел бы быть ebale, чтобы использовать dplyr enquo
в lapply
вызов при прыжке через столбцы таблицы Spark.
lapply(tbl_vars(sprkTbl),
function(col_nme) {
print(col_nme)
# Enquoe column name
quo_col_nme <- enquo(col_nme)
print(quo_col_nme)
sprkTbl %>%
select(!!quo_col_nme) %>%
# do stuff
collect -> dta_res
}) -> l_res
Однако, когда я пытаюсь запустить этот код, я продолжаю получать ошибку:
Ошибка в
(function (x, strict = TRUE)
: аргумент уже оценен
Я выделил ошибку enquo
:
>> lapply(tbl_vars(sprkTbl),
... function(col_nme) {
... print(col_nme)
... # Enquoe column name
... quo_col_nme <- enquo(col_nme)
... # print(quo_col_nme)
...
... # sprkTbl%>%
... # select(!!quo_col_nme) %>%
... # # do stuff
... # collect -> dta_res
... }) -> l_res
[1] "first_column_in_spark"
(а потом та же ошибка)
Ошибка в
(function (x, strict = TRUE)
: аргумент уже оценен
Я хочу понять почему enquo
не может быть использовано таким образом. tbl_vars
возвращает обычный символьный вектор, не должен ли col_name
быть строкой? Я хотел бы предусмотреть, чтобы синтаксис работал так же, как в:
mtcars %>% select(!!enquote("am")) %>% head(2)
am
Mazda RX4 1
Mazda RX4 Wag 1
но, очевидно, это не тот случай, когда он вызывается изнутри.
редактировать
оставляя искрящийся аспект на стороне, можно привести лучший и более воспроизводимый пример:
lapply(names(mtcars),function(x) {
col_enq <- enquo(x)
mtcars %>%
select(!!col_enq) %>%
head(2)
})
выдает одинаковую ошибку.
Желаемые результаты
Старый _
работает синтаксис
lapply(names(mtcars),function(x) {
# col_enq <- enquo(x)
mtcars %>%
select_(x) %>%
head(2)
})
Одним словом, я хочу достичь той же функциональности, переходя к столбцам таблицы Spark, и я бы предпочел не использовать устаревшие select_
,
1 ответ
Правильно ли я понимаю ваш вопрос, что вас интересует этот результат? Или вы обязаны использовать enquo
вместо quo
?
library(dplyr)
lapply(names(mtcars),function(x) {
col_enq <- quo(x)
mtcars %>%
select(!!col_enq) %>%
head(2)
})
#> [[1]]
#> mpg
#> Mazda RX4 21
#> Mazda RX4 Wag 21
#>
#> [[2]]
#> cyl
#> Mazda RX4 6
#> Mazda RX4 Wag 6
#>
#> [[3]]
#> disp
#> Mazda RX4 160
#> Mazda RX4 Wag 160
#>
#> [[4]]
#> hp
#> Mazda RX4 110
#> Mazda RX4 Wag 110
#>
#> [[5]]
#> drat
#> Mazda RX4 3.9
#> Mazda RX4 Wag 3.9
#>
#> [[6]]
#> wt
#> Mazda RX4 2.620
#> Mazda RX4 Wag 2.875
#>
#> [[7]]
#> qsec
#> Mazda RX4 16.46
#> Mazda RX4 Wag 17.02
#>
#> [[8]]
#> vs
#> Mazda RX4 0
#> Mazda RX4 Wag 0
#>
#> [[9]]
#> am
#> Mazda RX4 1
#> Mazda RX4 Wag 1
#>
#> [[10]]
#> gear
#> Mazda RX4 4
#> Mazda RX4 Wag 4
#>
#> [[11]]
#> carb
#> Mazda RX4 4
#> Mazda RX4 Wag 4