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
创建一个新的模型列。完成后,新变量的 filter
到 NA
行,然后拉出 group
.
mutate(df2, mod = map(data, ~posslm(A~B, data=.x))) %>%
filter( is.na(mod) ) %>%
pull(group)
[1] "B"
这是一个嵌套数据。
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
创建一个新的模型列。完成后,新变量的 filter
到 NA
行,然后拉出 group
.
mutate(df2, mod = map(data, ~posslm(A~B, data=.x))) %>%
filter( is.na(mod) ) %>%
pull(group)
[1] "B"