我知道这是一个真正的noob问题,但是如何将数据框列表附加到数据框以形成新列表,所有data.frames在列表中的同一级别?
我的一些尝试:
> 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
Run Code Online (Sandbox Code Playgroud)
假设所有dfs都是不同的数据帧.
我想将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
Run Code Online (Sandbox Code Playgroud)
如果您想df成为列表元素,则必须将其包装,list因为data.frame是内部列表.例如:
append(list(df), innerlist)
c(list(df), innerlist)
Run Code Online (Sandbox Code Playgroud)
正如您所认识到的,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
Run Code Online (Sandbox Code Playgroud)