имена без кавычек столбца данных в функции выбора - PullRequest
0 голосов
/ 02 октября 2019

Когда я делаю домашнее задание, у меня возникает путаница, проблема заключается в следующем: Работает ли эта функция, определенная ниже, если вы предоставляете ей имена столбцов в кавычках без кавычек? В 3-4 предложениях объясните, почему или почему нет.

sel <- function(x, col_names) {
select(x, col_names)}

Я беру в качестве примера данные радужной оболочки:

Sepal.Length    Sepal.Width   Petal.Length   Petal.Width    Species
   5.1              3.5           1.4             0.2        setosa

Я пытался

select(iris, Sepal.Length)

работал хорошо, но при попытке

sel(iris, Sepal.Length)

это не сработало, сообщение об ошибке выглядит так:

Error in .f(.x[[i]], ...): can't find 'Sepal.Length'

Может кто-нибудь может мне помочь?

Ответы [ 2 ]

1 голос
/ 02 октября 2019

Вы можете использовать подход rlang / tidyeval или в этом случае базовый подход R также работает с точкой, точкой, точкой.

library(dplyr)

sel <- function(x, ...) select(x, ...)

# tests
sel(iris, Sepal.Length)
sel(iris, Sepal.Length, Sepal.Width)
1 голос
/ 02 октября 2019

Имена столбцов без кавычек не работают так, как в функции, одним из способов является использование оператора curly-curly ({{}}) из rlang.

library(rlang)
sel <- function(x, col_names) dplyr::select(x, {{col_names}})

sel(iris, Sepal.Length) %>% head

#  Sepal.Length
#1          5.1
#2          4.9
#3          4.7
#4          4.6
#5          5.0
#6          5.4

, который является преемником предыдущегоenquo и оцените (!!)

sel <- function(x, col_names)  dplyr::select(x, !!enquo(col_names))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...