【发布时间】:2019-10-30 10:36:08
【问题描述】:
我正在浏览“R For Data Science”中map() 的示例。
一个例子是:
library(dplyr)
library(purrr)
df <- tibble(
a = rnorm(10),
b = rnorm(10),
c = rnorm(10),
d = rnorm(10)
)
df
#> # A tibble: 10 x 4
#> a b c d
#> <dbl> <dbl> <dbl> <dbl>
#> 1 -0.570 1.48 2.37 1.60
#> 2 0.122 2.08 0.222 0.0338
#> 3 -0.890 0.429 -1.75 -1.48
#> 4 0.334 0.854 0.849 -0.525
#> 5 1.22 -0.378 -1.00 -0.147
#> 6 -1.04 -0.427 -1.18 0.907
#> 7 -0.392 0.102 0.0951 0.842
#> 8 0.893 0.932 0.620 -0.911
#> 9 1.00 0.616 -0.937 -0.0286
#> 10 0.190 1.12 -1.02 1.45
在下面的 map_dbl() 中,我不需要在函数 map_dbl(~ mean) 之前添加波浪号,也不必放置 .
df %>% map_dbl(mean)
#> a b c d
#> 0.08714704 0.68069227 -0.17382734 0.17470388
然而,在下面的示例中,我必须将 ~ 放在 .f 之前,我还必须指定 data = .
models <- mtcars %>%
split(.$cyl) %>%
map(~ lm(mpg ~ wt, data = .))
models
我已经尝试阅读以前的答案,例如What is meaning of first tilde in purrr::map,但我仍然不确定何时需要使用波浪号和. 的确切区别
也许对我来说最简单的方法是总是包含这两件事,即使它们不是绝对必要的?
【问题讨论】: