←
PDF 361 / 520 Walk
→
English · PDF 361
Original PDF page 361
中文 · PDF 361

要处理这种情况,可以使用 invoke_map():

invoke_map(f, param, n = 5) %>% str() #> List of 3 #> $ : num [1:5] 0.762 0.36 -0.714 0.531 0.254 #> $ : num [1:5] 3.07 -3.09 1.1 5.64 9.07 #> $ : int [1:5] 9 14 8 9 7

第一个参数是函数列表或函数名称的字符向量。第二个参数是一个列表的列表,给出每个函数各自不同的参数。后续的参数会传递给每个函数。

同样,你可以使用 tribble() 来让创建这些配对变得更容易一些:

sim <- tribble( ~f, ~params, "runif", list(min = -1, max = 1), "rnorm", list(sd = 5), "rpois", list(lambda = 10) ) sim %>% mutate(sim = invoke_map(f, params, n = 10))

Walk

Walk 是 map 的一种替代方案,当你想为了副作用而调用函数,而不是为了其返回值时可以使用它。你通常这样做是因为想把输出渲染到屏幕上或将文件保存到磁盘——重要的是操作本身,而不是返回值。下面是一个非常简单的例子:

x <- list(1, "a", 3) x %>%