从R中的表列表创建数据框

时间:2018-12-06 18:12:08

标签: r list dataframe

我正在尝试创建一个需要从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
 )

1 个答案:

答案 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)