我从库 purr 中的 map 函数得到了不同的结果。这是Hadley的书R,用于数据科学中使用的以下代码。为什么会这样?
代码1
models1 <- mtcars %>% split(.$cyl) %>%
map(function(df) lm(mpg ~ wt, data=mtcars))
models1 %>%
map(summary) %>%
map_dbl(~.$r.squared)
code1-结果
4 6 8
0.5086326 0.4645102 0.4229655
代码2
models2 <- mtcars %>% split(.$cyl) %>%
map(~lm(mpg ~ wt, data=.))
models2 %>%
map(summary) %>%
map_dbl(~.$r.squared)
代码2结果
4 6 8
0.7528328 0.7528328 0.7528328
答案 0 :(得分:1)
问题是您要将整个数据集mtcars
传递给代码1中的lm()
函数,而不是传递在{{1中的函数定义中声明的df
}}如果将map(function(df) ...)
更改为mtcars
,则问题已解决
df
由reprex package(v0.2.1)于2019-02-26创建