Различные результаты с функцией карты - PullRequest
0 голосов
/ 26 февраля 2019

Я получаю разные результаты с помощью функции map из библиотеки purr .Вот следующий код, используемый в книге Хэдли, R для науки о данных.Почему это так?

code1

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 

code2

models2 <- mtcars %>% split(.$cyl) %>% 
  map(~lm(mpg ~ wt, data=.))

models2 %>% 
  map(summary) %>% 
  map_dbl(~.$r.squared)

code2-result

        4         6         8 
0.7528328 0.7528328 0.7528328 

1 Ответ

0 голосов
/ 26 февраля 2019

Проблема в том, что вы передаете весь набор данных mtcars в функцию lm() в коде-1 вместо того, чтобы передавать df, который вы объявляете в определении своей функции в map(function(df) ...) при изменении mtcarsdf Ваша проблема исправлена ​​

library(tidyverse)

models1 <- mtcars %>% split(.$cyl) %>% 
  map(function(df) lm(mpg ~ wt, data=df))

models1 %>% 
  map(summary) %>% 
  map_dbl(~.$r.squared)
#>         4         6         8 
#> 0.5086326 0.4645102 0.4229655

models2 <- mtcars %>% split(.$cyl) %>% 
  map(~lm(mpg ~ wt, data=.))

models2 %>% 
  map(summary) %>% 
  map_dbl(~.$r.squared)
#>         4         6         8 
#> 0.5086326 0.4645102 0.4229655

Создано в 2019-02-26 с помощью пакета Представить (v0.2.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...