将列表中的每个元素转换为数据框中的列
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
的任意长度
假设我有以下列表“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