将列表中的每个元素转换为数据框中的列

Convert Each Element in List to a Column in a Data Frame

假设我有以下列表“d”:

library(combinat)
d = permn(c("a", "b", "c"))

看起来如下:

[[1]]
[1] "a" "b" "c"

[[2]]
[1] "a" "c" "b"

[[3]]
[1] "c" "a" "b"

[[4]]
[1] "c" "b" "a"

[[5]]
[1] "b" "c" "a"

[[6]]
[1] "b" "a" "c"

是否可以将此列表的每个元素转换为一列?

这就是我想要做的:

desired_result = data.frame(col1 = c("a", "b", "c"), col2 = c("a", "c", "b"), col3 = c("c", "a", "b"), col4 = c("c", "b", "a"), col5 = c("b", "c", "a"), col6 = c("b", "a", "c"))

 col1 col2 col3 col4 col5 col6
1    a    a    c    c    b    b
2    b    c    a    b    c    a
3    c    b    b    a    a    c

有人可以告诉我怎么做吗?

谢谢!

我们可以使用矩阵作为中间步骤最终转换为 data.frame,并指定列名:

as.data.frame(matrix(unlist(d), ncol = 6)) |>
  setNames(paste0("col", 1:6))
  col1 col2 col3 col4 col5 col6
1    a    a    c    c    b    b
2    b    c    a    b    c    a
3    c    b    b    a    a    c

尝试 matrix(unlist(d), ncol = length(d)) 或者,如果您需要数据框,data.frame(matrix(unlist(d), ncol = length(d)) 用于 d

的任意长度