【问题标题】:How to cast a list to a data frame with unequal columns names, base R only如何将列表转换为具有不相等列名的数据框,仅基于 R
【发布时间】:2021-01-27 22:23:18
【问题描述】:

我读过

我有一个列名不相等的列表,我尝试将其转换为数据框,短行中缺少的条目为 NA。使用 tidyverse(例如使用 bind_rows)很容易,但这是针对应仅使用基础 R 的低级包。

mylist = list(
  list(a = 3, b = "anton"),
  list(a = 5, b = "bertha"),
  list(a = 7, b = "caesar", d = TRUE)
)
# No problem with equal number of columns
do.call(rbind, lapply(mylist[1:2], data.frame))

# The list of my names
unique(unlist(lapply(mylist, names)))

# rbind does not like unequal numbers
do.call(rbind, lapply(mylist, data.frame))



【问题讨论】:

    标签: r list dataframe rbind do.call


    【解决方案1】:

    找出列表中的唯一列,在lapply 中使用setdiff 添加其他列。

    cols <- unique(unlist(sapply(mylist, names)))
    
    do.call(rbind, lapply(mylist, function(x) {
      x <- data.frame(x)
      x[setdiff(cols, names(x))] <- NA
      x
    }))
    
    #  a      b    d
    #1 3  anton   NA
    #2 5 bertha   NA
    #3 7 caesar TRUE
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-29
      • 1970-01-01
      • 1970-01-01
      • 2014-08-27
      • 1970-01-01
      相关资源
      最近更新 更多