【问题标题】:Adding tidyselect helper functions to a vector [duplicate]将 tidyselect 辅助函数添加到向量 [重复]
【发布时间】:2020-07-04 00:55:25
【问题描述】:

我经常为我在编码时最常使用的变量创建一个“向量”。通常,如果我只是在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

【问题讨论】:

    标签: r dplyr tidyselect


    【解决方案1】:

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

    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
    #....
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-25
      • 1970-01-01
      相关资源
      最近更新 更多