我一直在学习一门在线课程,我的练习涉及到使用rlang函数来生成所需的输出,建议的解决方案涉及到使用for()循环,但由于课程的前一部分涉及到purrr和map(),因此求助于for()循环似乎是一种倒退。
我有一个小问题:(命名为"参数")
# A tibble: 15 × 2
fname .args
<chr> <chr>
1 rnorm n=10,mean=0,sd=3
2 rnorm n=100,mean=0,sd=3
3 rnorm n=1000,mean=0,sd=3
4 rnorm n=10000,mean=0,sd=3
5 rnorm n=100000,mean=0,sd=3
6 runif n=10,min=0,max=10
7 runif n=100,min=0,max=10
8 runif n=1000,min=0,max=10
9 runif n=10000,min=0,max=10
10 runif n=100000,min=0,max=10
11 rexp n=10,rate=2
12 rexp n=100,rate=2
13 rexp n=1000,rate=2
14 rexp n=10000,rate=2
15 rexp n=100000,rate=2
我写了这个函数:
demo_1 <- function(func_name, arg_list){
do.call(func_name, arg_list)
}
如果我这样调用函数:
demo_1(arguments$fname[[1]], as.list(strsplit(arguments$.args[[1]],",")))
我得到了预期的输出:[1] -0.4454785 0. 6222901 -1.3134630
一周来我一直在努力将这些内容传递给map(),但还是没能解决这个问题,我该如何将这些内容传递给map()来逐行处理整个tibble呢?
谢谢。
1条答案
按热度按时间f4t66c6m1#
使用
rowwise
更新
通过仔细查看OP的函数参数,发现输出不正确。即,对于第一行,它应返回10个观察结果
n = 10
(仅显示前2行的输出,因为其他行的n
值较大)或者不使用
eval/parse
数据