如何将字符串集成到表达式中

时间:2019-07-16 15:29:22

标签: r rlang

我想将字符串(重新)集成到表达式中,如下例所示:

library(rlang)
library(tidyverse)
library(stringr)

d <- tibble(a = sample(LETTERS[1:4], 10, replace = TRUE),
            b = sample(letters[6:7], 10, replace = TRUE),
            x = rnorm(10, 100, 20))

want <- function(d, ...) {
  d <- ensym(d)
  vars <- ensyms(...)
  vars <- map_chr(vars, as_string)
  vars <- str_c(vars, collapse = ", ")
  # next step: integrate string into expression:
  my_expr <- expr(select(!!d, parse_exprs(vars))) # how to rectify this     line?
  expr_print(my_expr)
  # is:        select(d, parse_exprs(vars))
  # should be: select(d, a, x)
  eval(my_expr)
}
want(d, a, x)

我也想避免使用.vars,因为这仅适用于dplyr。

not_want <- function(d, ...) {
  vars <- ensyms(...)
  select(d, .vars = map_chr(vars, as_string)) # I would like to avoid .vars!!
}
not_want(d, a, x)

我该如何将功能设置为正确?

0 个答案:

没有答案