【问题标题】:List of dataframes with consecutive columns具有连续列的数据框列表
【发布时间】:2026-01-31 04:55:01
【问题描述】:

给定一个数据框

A <- c("One", "Two", "Three")
B <- c(1,2,3)
C <- c(1,1,1)
df <- data.frame(A,B,C)

我想生成一个数据框列表,如下例所示

A
One
Two
Three

A     B
One   1
Two   2
Three 3 

A     B  C
One   1  1
Two   2  1
Three 3  1

我正在处理一个大约 50 列的数据框。我尝试了几次,但收效甚微。

谢谢!

【问题讨论】:

标签: r list dataframe permutation


【解决方案1】:

我们可以使用saaply 来选择使用seq 的增量列。

sapply(seq(ncol(df)), function(x) df[seq(x)])

#[[1]]
#      A
#1   One
#2   Two
#3 Three

#[[2]]
#      A B
#1   One 1
#2   Two 2
#3 Three 3

#[[3]]
#      A B C
#1   One 1 1
#2   Two 2 1
#3 Three 3 1

【讨论】:

  • 但是他已经有 50 列要先创建 df。所以首先制作 df.虽然很好地使用seq()
  • @SowmyaS.Manian 我尝试了 50 列数据框。它甚至不需要一秒钟。你能在最后检查一下并确认时间吗?
  • 是的,很酷。工作良好。您是否能够像从 1 到否那样逐步找到它。列表中的向量一一附加然后列出?
  • 抱歉,没听懂。 find it 是什么意思? it 这里是什么?
【解决方案2】:

您可以像这样使用标准循环:

A <- c("One", "Two", "Three")
B <- c(1,2,3)
C <- c(1,1,1)
df <- data.frame(A,B,C)

dfList = list()
for(i in 1:ncol(df)){


  dfSub <- data.frame(df[,1:i])
  dfList[[i]] <- dfSub

  }


dfList
[[1]]
  df...1.i.
1       One
2       Two
3     Three

[[2]]
      A B
1   One 1
2   Two 2
3 Three 3

[[3]]
      A B C
1   One 1 1
2   Two 2 1
3 Three 3 1

【讨论】: