【发布时间】:2021-02-11 01:27:02
【问题描述】:
当在mutate 中执行pmap 时,我经常喜欢使用以下构造,以便可以引用map 函数中的普通列名,而不是..1、..2 等。必须跟踪我给它们的顺序:
library(tidyverse)
mtcars %>%
nest(data = -c(vs, am, gear, carb)) %>%
mutate(plot = pmap(lst(vs, am, gear, carb, data), ~with(list(...), {
# not relevant to question, just example task:
ggplot(data = data, aes(x = wt, y = mpg)) + geom_point() +
labs(subtitle = (paste0("am=", am, "\n",
"carb=", carb, "\n",
"gear=", gear, "\n",
"vs=", vs)))
})))
#> # A tibble: 14 x 6
#> vs am gear carb data plot
#> <dbl> <dbl> <dbl> <dbl> <list> <list>
#> 1 0 1 4 4 <tibble [2 x 7]> <gg>
#> 2 1 1 4 1 <tibble [4 x 7]> <gg>
#> 3 1 0 3 1 <tibble [3 x 7]> <gg>
#> 4 0 0 3 2 <tibble [4 x 7]> <gg>
#> 5 0 0 3 4 <tibble [5 x 7]> <gg>
#> 6 1 0 4 2 <tibble [2 x 7]> <gg>
#> 7 1 0 4 4 <tibble [2 x 7]> <gg>
#> 8 0 0 3 3 <tibble [3 x 7]> <gg>
#> 9 1 1 4 2 <tibble [2 x 7]> <gg>
#> 10 0 1 5 2 <tibble [1 x 7]> <gg>
#> 11 1 1 5 2 <tibble [1 x 7]> <gg>
#> 12 0 1 5 4 <tibble [1 x 7]> <gg>
#> 13 0 1 5 6 <tibble [1 x 7]> <gg>
#> 14 0 1 5 8 <tibble [1 x 7]> <gg>
我的问题是,我可以在 lst() 中放入什么以便将所有列传递给映射函数,而不是像上面那样写出所有列?我尝试了names(.) 和!!!names(.) 作为我的第一次尝试。或者,如果有更简洁的方法来做到这一点,比如不使用lst(),那也可以。
【问题讨论】:
标签: r dplyr purrr tibble tidyeval