R语言 从具有不同长度的元素列表创建数据框

1mrurvl1  于 2023-02-20  发布在  其他
关注(0)|答案(2)|浏览(225)

我有一个具有不同长度数值元素的形式

list1 <- 1 : 2
list2 <- 1 : 3
list3 <- c(10, 100)

mylist <- list(a = list1, b = list2, c = list3)

我想把它转换成这样的数据框架

# a 1
# a 2
# b 1
# b 2
# b 3
# c 10
# c 100

有什么办法吗?

lmvvr0a8

lmvvr0a81#

我们可以直接在list上应用expand.grid

expand.grid(mylist)

或从tidyr使用expand_grid

library(tidyr)
expand_grid(!!!mylist)

对于更新的数据集

library(tibble)
enframe(mylist) %>% 
  unnest(value)
x6492ojm

x6492ojm2#

例如expand.grid的替代方法,使用lapply

data.frame(do.call(rbind, lapply(mylist$b, function(x) cbind(x, y = mylist$a))))
   x y
1  1 1
2  1 2
3  1 3
4  1 4
5  1 5
6  2 1
7  2 2
8  2 3
9  2 4
10 2 5
11 3 1
12 3 2
13 3 3
14 3 4
15 3 5

相关问题