如何将变量名和函数调用的tibble传递给tibble

How to pass tibble of variable names and function calls to tibble

我正试图从一堆变量名和函数中脱颖而出:

N <- 100
dat <- 
tibble(
  variable_name = c("a", "b"),
  variable_value = c("rnorm(N)", "rnorm(N)")
)

带有两个长度为 N 的变量 a 和 b 的 tibble

dat2 <-
  tibble(
    a = rnorm(N),
    b = rnorm(N)
  )

有没有!!!或 rlang-y 方式来完成这个?

我们可以evalutate 字符串

library(dplyr)
library(purrr)
library(tibble)
deframe(dat) %>%
      map_dfc(~ eval(rlang::parse_expr(.x)))

-输出

# A tibble: 100 x 2
         a       b
     <dbl>   <dbl>
 1  0.0750  2.55  
 2 -1.65   -1.48  
 3  1.77   -0.627 
 4  0.766  -0.0411
 5  0.832   0.200 
 6 -1.91   -0.533 
 7 -0.0208 -0.266 
 8 -0.409   1.08  
 9 -1.38   -0.181 
10  0.727   0.252 
# … with 90 more rows

这是一个带有管道和 as_tibble 调用的基本方法。

Map(function(x) eval(str2lang(x)), setNames(dat$variable_value, dat$variable_name)) %>%
  as_tibble