我有一个具有不同长度数值元素的形式
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
有什么办法吗?
lmvvr0a81#
我们可以直接在list上应用expand.grid
list
expand.grid
expand.grid(mylist)
或从tidyr使用expand_grid
tidyr
expand_grid
library(tidyr) expand_grid(!!!mylist)
对于更新的数据集
library(tibble) enframe(mylist) %>% unnest(value)
x6492ojm2#
例如expand.grid的替代方法,使用lapply
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
2条答案
按热度按时间lmvvr0a81#
我们可以直接在
list
上应用expand.grid
或从
tidyr
使用expand_grid
对于更新的数据集
x6492ojm2#
例如
expand.grid
的替代方法,使用lapply