【问题标题】:How to pass tibble of variable names and function calls to tibble如何将变量名称和函数调用的 tibble 传递给 tibble
【发布时间】:2021-05-21 22:23:48
【问题描述】:

我正在尝试从变量名和函数中提取如下:

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

到一个包含两个长度为 N 的变量 a 和 b 的小标题

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

有没有!!!或 rlang-y 方式来完成此任务?

【问题讨论】:

    标签: r tidyverse tibble rlang


    【解决方案1】:

    我们可以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
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2018-11-16
        • 1970-01-01
        • 1970-01-01
        • 2014-08-13
        • 2017-07-21
        • 1970-01-01
        • 2019-07-30
        • 2021-12-26
        • 2020-11-08
        相关资源
        最近更新 更多