2012-10-25 118 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