我正在尝试创建一个需要从R中的列表填充的数据框。该列表包含2003个表,这些表表示不同县的土地覆盖数据。每个表都有两行-列标签和土地覆盖数据行。不幸的是,每个表都有不同的列数(如果不存在该县的土地覆被类别,而不是得到零,则在创建列表时会删除该列)。
我想要的是一个长度为2003行,宽度为15列的数据框(每个土地覆盖类别为一列)。
当我尝试
df <- data.frame(matrix(unlist(l), nrow=132, byrow=T))
根据另一个问题,它创建了一个由两列组成的长表(一个长表包含所有2003年县的标签以及第二列中的值)。因为每个表的长度不相等,所以我无法将其转换为宽格式。
一些示例数据:
l <- replicate(
2003,
list(sample(1:100, sample(1:15,15))),
simplify = FALSE
)
答案 0 :(得分:1)
如果您的对象实际上是数据帧列表,则您应该可以执行succ/1
。由于您的示例实际上并不是数据帧列表,因此需要执行额外的步骤。
data.table::rbindlist(your_list, fill = T)
以R为底
library(data.table)
l <- lapply(l, function(x){
x <- as.list(x[[1]])
setNames(x, paste0('V', seq_along(x)))})
df <- rbindlist(l, fill = T)