如何将变量名和函数调用的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 方式来完成这个?
我们可以eval
utate 字符串
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
我正试图从一堆变量名和函数中脱颖而出:
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 方式来完成这个?
我们可以eval
utate 字符串
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