在dplyr中是否有相当于plyr的.inform?

时间:2015-12-11 08:50:40

标签: r dplyr plyr

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

1 个答案:

答案 0 :(得分:2)

我对dplyr内的方法一无所知,因此这可能与您要查找的内容有些正交,但这是使用splitpurrr::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