【发布时间】:2015-12-11 08:50:40
【问题描述】:
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
【问题讨论】:
-
查看
?group_by的帮助文件,没有迹象表明存在这样的选项(而它记录在?plyr::ddply中),直到现在我还没有看到它在任何地方使用。但是,我假设您得到的错误会让您知道它是在mutate、summarise、filter... 还是在group_by操作之后的其他 dplyr 函数中。也许您可以举一个不清楚的例子? -
我添加了一个最小的例子。
-
在您的示例中,第一组的大小为 2 (1, 1) 但您尝试在 mutate 调用中创建一个具有 3 个值 (=rows) 的新列,这在 dplyr 中是不可能的-世界。这个例子是不是你不清楚的案例?
-
我构造了这个例子,所以它失败了。这个例子的重点是表明
dplyr没有告诉我们哪个组失败了。相反,如果我尝试使用plyr和.inform = TRUE进行类似操作,plyr会告诉我是第 1 组导致失败。在实际应用中,看不到哪个组失败了,所以.inform = TRUE很有价值。 -
我明白你的意思。正如我所说,我不知道目前在 dplyr(CRAN 版本)中实现的此类功能