相关疑难解决方法(0)

rbind列表中的数据帧

我有一个列表,看起来像这样:x[[state]][[year]].这个元素的每个元素都是一个数据框,单独访问它们不是问题.

但是,我想在多个列表中绑定数据帧.更具体地说,我想拥有与我多年一样多的数据帧输出,即每年所有状态数据帧的rbind.换句话说,我想将我所有的状态数据逐年合并到不同的数据框中.

我知道我可以将单个列表组合到一个数据框中do.call("rbind",list).但是我不知道如何在列表列表中这样做.

r list dataframe

23
推荐指数
2
解决办法
2万
查看次数

添加两个列表的所有元素

假设我有两个列表,列表的相应元素是相同的形状:

 e1=list(1,c(1,2,3),matrix(1:12,3,4))
 e2=list(1,c(1,2,3),matrix(1:12,3,4))
Run Code Online (Sandbox Code Playgroud)

我想逐个元素地添加这两个列表.这是我的解决方案,适用于任何长度的列表和任何形状的元素,只要它们匹配并且是可添加的:

> esum
function(e1,e2){
  e = list()
  for(i in 1:length(e1)){
    e[[i]]=e1[[i]]+e2[[i]]
  }
  e
}
> esum(e1,e2)
Run Code Online (Sandbox Code Playgroud)

但它看起来很丑陋,而且可能是一种可以在单行中完成的事情.

这是问题的第一阶段,实际上是要添加许多这些列表的完整列表,但是一旦定义了esum,它只是Reduce:

 > ee = list(e1,e2,e1,e1,e2)
 > Reduce(esum,ee)[[3]]  # lets just check [[3]] for now
      [,1] [,2] [,3] [,4]
 [1,]    5   20   35   50
 [2,]   10   25   40   55
 [3,]   15   30   45   60
Run Code Online (Sandbox Code Playgroud)

那么,任何人都有这样的单线程?

是的我知道单行并不总是最好的东西.

r

8
推荐指数
1
解决办法
5584
查看次数

标签 统计

r ×2

dataframe ×1

list ×1