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