如何使 reshape2::acast 在变量聚合时抛出错误?

How to make reshape2::acast throw an error upon variable aggregation?

> DF = data.frame(expand.grid(LETTERS[1:3], LETTERS[4:5])[-3,], value=1:5)
> DFa = rbind(DF, c("A","D",6))
> DF
  Var1 Var2 value
1    A    D     1
2    B    D     2
4    A    E     3
5    B    E     4
6    C    E     5
> DFa
   Var1 Var2 value
1     A    D     1
2     B    D     2
4     A    E     3
5     B    E     4
6     C    E     5
61    A    D     6

以下按预期工作:

> reshape2::acast(DF, Var1~Var2, value.var="value")
   D E
A  1 3
B  2 4
C NA 5

对于执行聚合的情况,我更希望函数调用抛出错误而不是只写一条消息:

> reshape2::acast(DFa, Var1~Var2, value.var="value")
Aggregation function missing: defaulting to length
  D E
A 2 1
B 1 1
C 0 1

如何包装第二次调用以抛出错误而不是显示消息?

我已经尝试了 capture.output()sink() 的一些组合,但我希望在我的结果变量中包含调用的结果。

消息是 R 中 condition system 的一部分,可以使用适当的函数进行处理。因此,这有效:

withCallingHandlers(reshape2::acast(DF, Var1~Var2, value.var="value"),
                    message = stop)

顺便说一下,这是强烈喜欢使用 warningmessage 而不是 cat 的原因。