R:如何聚合列表中的dfs行(包含空dfs)?

R:如何聚合列表中的dfs行(包含空dfs)?,r,list,aggregate,R,List,Aggregate,我希望聚合列表中的所有数据帧行,这些数据帧在列中具有相同的字符。为此我用了 lapply(lst, function(x) aggregate(Value ~ Area, x, sum)) 这很好用。但是,我的列表中也有空的dfs(我需要它,所以我不能删除它们),我得到一个错误: Error in aggregate.data.frame(mf[1L], mf[-1L], FUN = FUN, ...) : no rows to aggregate 有没有办法克服这个错误?谢谢下面是一

我希望聚合列表中的所有数据帧行,这些数据帧在列中具有相同的字符。为此我用了

lapply(lst, function(x) aggregate(Value ~ Area, x, sum))
这很好用。但是,我的列表中也有空的dfs(我需要它,所以我不能删除它们),我得到一个错误:

Error in aggregate.data.frame(mf[1L], mf[-1L], FUN = FUN, ...) : 
  no rows to aggregate
有没有办法克服这个错误?谢谢下面是一个小例子:

lst <- list("111.2012"=data.frame("Area"=character(0), "Value"=numeric(0)),
            "112.2012"=data.frame("Area"=c("a","b","b","a"), "Value"=c(1,5,3,2)))

<代码> LST <代码> LST考虑向匿名函数添加<代码>其他x <代码>,以便“空”列表元素按原样返回(即用列名,但0行)。
lst <- list("111.2012"=data.frame("Area"=character(0), "Value"=numeric(0)),
            "112.2012"=data.frame("Area"=c("a","b","b","a"), "Value"=c(1,5,3,2)))


lapply(lst, function(x) if (nrow(x)) aggregate(Value ~ Area, x, sum) else x)
$`111.2012`
[1] Area  Value
<0 rows> (or 0-length row.names)

$`112.2012`
  Area Value
1    a     3
2    b     8