【发布时间】:2018-11-27 06:11:34
【问题描述】:
我不清楚参数何时可以在 pmap() 和 pwalk() 的 .l 参数中显式配对。有时,这些 purrr 函数似乎仅在提供给它们的数据帧的名称直接映射到 .f 中命名的函数的预期参数时才起作用。其他时候,可以向 pmap() 提供完整的数据帧,并且可以显式地对变量进行映射。
library(dplyr)
library(purrr)
library(tibble)
set.seed(57)
ds_mt <-
mtcars %>%
rownames_to_column("model") %>%
mutate(am = factor(am, labels = c("auto", "manual"))) %>%
select(model, mpg, wt, cyl, am) %>%
sample_n(3)
foo <- function(model, am, mpg){
print(
paste("The", model, "has a", am, "transmission and gets", mpg, "mpgs.")
)
}
为什么这些代码块有效?
ds_mt %>%
select(model, am, mpg) %>%
pwalk(
.l = .,
.f = foo
)
# example with explicit pair mapping
ds_mt %>%
mutate(
new_var =
pmap(
.l = list(model=model, am=am, mpg=mpg),
.f = foo
)
)
虽然这些代码块失败了?
ds_mt %>%
pwalk(
.l = list(model, am, mpg),
.f = foo
)
ds_mt %>%
pwalk(
.l = list(model=model, am=am, mpg=mpg),
.f = foo
)
【问题讨论】:
-
你的变异示例对我不起作用
-
知道了:我认为您有错字并且缺少
list() -
谢谢,我已更正了错字。感谢您的彻底回应。
-
我的荣幸。我希望它有所帮助。我通过删除关于那个错字的(现在没用的)部分来编辑我的答案。