当进行pmap
内mutate
,我经常喜欢用下面的结构,这样我可以参考平原列名的内部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()
,那也可以。
要传递所有内容,.
而无需单独指定每个列即可使用。
library(tidyverse)
mtcars %>%
nest(data = -c(vs, am, gear, carb)) %>%
mutate(plot = pmap(., ~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)))
})))
# vs am gear carb data plot
# <dbl> <dbl> <dbl> <dbl> <list> <list>
# 1 0 1 4 4 <tibble [2 × 7]> <gg>
# 2 1 1 4 1 <tibble [4 × 7]> <gg>
# 3 1 0 3 1 <tibble [3 × 7]> <gg>
# 4 0 0 3 2 <tibble [4 × 7]> <gg>
# 5 0 0 3 4 <tibble [5 × 7]> <gg>
# 6 1 0 4 2 <tibble [2 × 7]> <gg>
# 7 1 0 4 4 <tibble [2 × 7]> <gg>
# 8 0 0 3 3 <tibble [3 × 7]> <gg>
# 9 1 1 4 2 <tibble [2 × 7]> <gg>
#10 0 1 5 2 <tibble [1 × 7]> <gg>
#11 1 1 5 2 <tibble [1 × 7]> <gg>
#12 0 1 5 4 <tibble [1 × 7]> <gg>
#13 0 1 5 6 <tibble [1 × 7]> <gg>
#14 0 1 5 8 <tibble [1 × 7]> <gg>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句