plyr
有一个非常方便的选项.inform = TRUE
,它允许用户知道split-apply-combine进程中的哪些部分失败。
是否有相同的方法可以通过dplyr
' group_by
知道哪一部分失败了?
最小示例:以下df
中的第1组是导致问题的组,但dplyr
错误消息并未显示该信息。
df <- data.frame(group = c(1, 1, 2, 2, 2))
df %>% group_by(group) %>% mutate(value = c(10, 10, 10))
# Error: incompatible size (3), expecting 2 (the group size) or 1
答案 0 :(得分:2)
我对dplyr
内的方法一无所知,因此这可能与您要查找的内容有些正交,但这是使用split
和purrr::possibly
的一种潜在方法。
library(purrr); library(dplyr)
set_3_tens <- function(df) { df %>% mutate(value = c(10,10,10)) }
df %>%
split(.$group) %>%
map(
possibly(
set_3_tens, otherwise = "Problem in group"))
$`1`
[1] "Problem in group"
$`2`
group value
1 2 10
2 2 10
3 2 10