R - 在聚合函数中将 NA 设置为零

R - setting NA to zero in an aggregate function

在 R 中,我正在尝试 运行 以下代码来查找数据框中多行的方差。多于1个case时方差计算正确,但ID1&ID2只有1个case时明显产生NA

collated <- aggregate(.~ID1+ID2, interactionData, FUN=var, na.rm=TRUE) 

在上面的代码中,有没有办法强制R设置为0而不是NA

(我知道我可以 运行 之后按照 collated[is.na(collated)] <- 0 编写一行代码。但是,我只是想知道是否可以在 aggregate函数。

我们可以根据length创建一个if/else条件,将length输出为1到0或者else得到var的变量。

aggregate(.~ID1+ID2, interactionData, FUN=function(x)
         if(length(x)==1) 0 else var(x, na.rm=TRUE))

数据

set.seed(24)
interactionData <- data.frame(ID1= rep(1:4, each=3), 
  ID2= sample(LETTERS[1:5], 12, replace=TRUE), value= rnorm(12))