我想循环 a 的行tibble
,一列应保存输出中相应槽应具有的名称,其他列是函数的参数。
我知道如何解决这个问题,但我想知道是否有可能在函数内部pmap
进行命名?
library(purrr)
library(tibble)
params <- tibble(nm = LETTERS[1:2], x = 1:2, y = 2:3)
## this has one addional level of nesting
pmap(params, function(nm, x, y) {
set_names(list(x + y), nm)
}) # %>% flatten would remove the unnecessary level
## correct format but mixes tidyverse syntax with base syntax
map(split(params, params$nm), ~ .x$x + .x$y)
## correct format & tidyverse syntax but naming must happen **outside**
pmap(params, function(nm, x, y) {
x + y
}) %>%
set_names(params$nm)
预期结果与版本 2 或 3 中的tidyverse
风格相同,但无需事后重命名结果。
如果语法完全像这样怎么办
tidyverse
?工作方式
pmap
是,它从第一个参数的名称中获取名称,因此不会对输出进行后处理pmap
,但它会在运行之前添加此类名称,pmap
以便输入符合其预期。给予
另一种选择
pmap
: