2012-10-25 120 views
5

我知道这是一个真正的noob问题,但是如何将数据框列表添加到数据框以形成新列表,并且列表中的所有数据框都处于同一级别?将列表附加到列表

我的一些尝试:

> df <- data.frame(time=1:5) 
> df 
    time 
1 1 
2 2 
3 3 
4 4 
5 5 
> innerlist <- list(df,df,df) 
> innerlist 
[[1]] 
    time 
1 1 
2 2 
3 3 
4 4 
5 5 

[[2]] 
    time 
1 1 
2 2 
3 3 
4 4 
5 5 

[[3]] 
    time 
1 1 
2 2 
3 3 
4 4 
5 5 

> outerlist <- list(df,innerlist) 
> outerlist 
[[1]] 
    time 
1 1 
2 2 
3 3 
4 4 
5 5 

[[2]] 
[[2]][[1]] 
    time 
1 1 
2 2 
3 3 
4 4 
5 5 

[[2]][[2]] 
    time 
1 1 
2 2 
3 3 
4 4 
5 5 

[[2]][[3]] 
    time 
1 1 
2 2 
3 3 
4 4 
5 5 


> outerlist2 <- c(df,innerlist) 
> outerlist2 
$time 
[1] 1 2 3 4 5 

[[2]] 
    time 
1 1 
2 2 
3 3 
4 4 
5 5 

[[3]] 
    time 
1 1 
2 2 
3 3 
4 4 
5 5 

[[4]] 
    time 
1 1 
2 2 
3 3 
4 4 
5 5 

> outerlist3 <- cbind(df,innerlist) 
> outerlist3 
    time time time time 
1 1 1 1 1 
2 2 2 2 2 
3 3 3 3 3 
4 4 4 4 4 
5 5 5 5 5 

假装所有df s为不同的数据帧。

我要追加DF到innnerlist,并得到一个清单,4个DFS,如:

> outerlistmagic <- magic(df, innerlist) 
> outerlistmagic 
[[1]] 
    time 
1 1 
2 2 
3 3 
4 4 
5 5 

[[2]] 
    time 
1 1 
2 2 
3 3 
4 4 
5 5 

[[3]] 
    time 
1 1 
2 2 
3 3 
4 4 
5 5 

[[4]] 
    time 
1 1 
2 2 
3 3 
4 4 
5 5 

回答

4

如果你想df是一个列表元素,你必须把它包在list因为数据。框架是内部列表。例如:

append(list(df), innerlist) 
c(list(df), innerlist) 
+0

啊,超级,谢谢!你已经解释了为什么,所以我现在明白了。 –

4

如您所知,c是组合列表的正确功能。虽然data.frame也是一个列表,但c将删除data.frame属性并将其放到包含向量的列表中。你可以通过将它包裹在另一个列表中来保护它:

c(list(df),innerlist) 
[[1]] 
    time 
1 1 
2 2 
3 3 
4 4 
5 5 

[[2]] 
    time 
1 1 
2 2 
3 3 
4 4 
5 5 

[[3]] 
    time 
1 1 
2 2 
3 3 
4 4 
5 5 

[[4]] 
    time 
1 1 
2 2 
3 3 
4 4 
5 5