Purrr: В каком вложенном фрейме данных произошла ошибка? - PullRequest
0 голосов
/ 02 июня 2018

Вот вложенные данные.

df1 <- tibble::tribble(
   ~A,        ~B,  ~group,
   4L,         1L,  "A",
   7L,         4L,  "A",
  NA_integer_, 1L,  "B",
  NA_integer_, 10L, "B")

df2 <- df1 %>% group_by(group) %>% nest()

Мне нужно запустить lm с помощью purrr: map.

map(df2$data, ~lm(A~B, data=.x))

Как лучше всего определить, в каких вложенных данных произошла ошибка, например, как узнать, что в группе B есть проблема.

Можете ли вы предположить, что решение может использовать мурлыкание возможно или безопасно?

1 Ответ

0 голосов
/ 02 июня 2018

Вы можете использовать possibly() здесь.В моем примере он возвращает NA, если в модели есть ошибка.

Сначала я набираю posslm, используя otherwise, чтобы сообщить, что возвращать, если после использования * 1007 возникает ошибка.

posslm = possibly(lm, otherwise = NA)

Затем вы можете создать новый столбец моделей с map в mutate.Как только это будет сделано, от filter до NA строк для новой переменной, а затем вытащите group.

mutate(df2, mod = map(data, ~posslm(A~B, data=.x))) %>%
    filter( is.na(mod) ) %>%
    pull(group)

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