R:如何聚合列表中的 dfs 行(包含空 dfs)?
R: How to aggregate rows of dfs in a list (containing empty dfs)?
我想聚合列表中一列中具有相同字符的所有数据框行。为此,我使用了
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 <- 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
我想聚合列表中一列中具有相同字符的所有数据框行。为此,我使用了
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 <- 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