7

我知道这是一个非常菜鸟的问题,但是如何将数据帧列表附加到数据帧以形成一个新列表,并且所有 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

假设所有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
4

2 回答 2

5

如果你想df成为一个列表元素,你必须把它包装起来,list因为 data.frame 在内部是一个列表。例如:

append(list(df), innerlist)
c(list(df), innerlist)
于 2012-10-25T09:41:36.090 回答
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
于 2012-10-25T09:42:08.590 回答