Purrr:哪个嵌套数据框遇到了错误?

Purrr: Which nested dataframe encountered the error?

这是一个嵌套数据。

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()

我需要使用 purrr:map 运行 lm。

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

找出哪个嵌套数据遇到错误的最佳方法是什么,即我如何知道 B 组有问题。

您能否提出一个可能或安全地使用 purrr 的解决方案?

你可以在这里使用possibly()。在我的示例中,如果模型有错误,我有 return NA

首先我制作posslm,使用otherwise告诉它return如果在使用lm后出现错误,

posslm = possibly(lm, otherwise = NA)

然后您可以在 mutate 中使用 map 创建一个新的模型列。完成后,新变量的 filterNA 行,然后拉出 group.

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

[1] "B"