0

我经常为我在编码时最常使用的变量创建一个“向量”。通常,如果我只是在其中输入矢量对象,select它就可以完美地工作。有什么方法可以在字符串的辅助函数中使用吗?

例如我可以做

library(dplyr)

x = c('matches("cyl")')

mtcars %>% 
  select_(x)

但这并不可取,因为 1)select_已弃用,2) 它不可扩展(即,x = c('hp', 'matches("cyl")')不会同时获取相关列。

无论如何我可以在向量中使用更多的 tidyselect 辅助函数吗?

注意:如果我这样做:

x = c(matches("cyl"))
#> Error: `matches()` must be used within a *selecting* function.
#> ℹ See <https://tidyselect.r-lib.org/reference/faq-selection-context.html>.

我得到一个错误,所以我肯定需要以enquo某种方式。

4

1 回答 1

1

您正在尝试将字符串转换为可能不是最佳方法的代码。但是,您可以使用parse_exprswith !!!

library(dplyr)
library(rlang)

x = c('matches("cyl")')
mtcars %>% select(!!!parse_exprs(x))

#                    Cyl
#Mazda RX4             6
#Mazda RX4 Wag         6
#Datsun 710            4
#Hornet 4 Drive        6
#Hornet Sportabout     8
#...

x = c('matches("cyl")', 'hp')
mtcars %>% select(!!!parse_exprs(x))

#                    cyl  hp
#Mazda RX4             6 110
#Mazda RX4 Wag         6 110
#Datsun 710            4  93
#Hornet 4 Drive        6 110
#Hornet Sportabout     8 175
#....
于 2020-07-04T00:59:53.960 回答