使用包含R中的NA的空列表的列表进行rbinding

时间:2018-01-23 13:21:04

标签: r list na rbind

我有一个嵌套列表,其中一些元素为空列表(extract):

 str(myList)
 List of 100
 $ :'data.frame':   2 obs. of  10 variables:
  ..$ _index          : chr [1:2] "alias_fr" "alias_fr"
  ..$ _type           : chr [1:2] "triplet" "triplet"
  ..$ _id             : chr [1:2] "Q9327" "Q3122270"
 $ : list()
 $ :'data.frame':   1 obs. of  9 variables:
  ..$ _index          : chr "alias_fr"
  ..$ _type           : chr "triplet"
  ..$ _id             : chr "Q17009"

我需要使用bind_rows索引每个元素:

df <- bind_rows(myList, .id = "id")

不幸的是,空元素(示例中的第二个)被删除,结果是索引编制错误(索引转移):

  id   _index   _type      _id
1  1 alias_fr triplet    Q9327
2  1 alias_fr triplet Q3122270
3  2 alias_fr triplet   Q17009

我的期望:

  id   _index   _type      _id
1  1 alias_fr triplet    Q9327
2  1 alias_fr triplet Q3122270
3  2 NA       NA      NA
3  3 alias_fr triplet   Q17009

我已经尝试了几种方法但没有取得任何成功:

Function to change Null to NA

Convert R list to dataframe with missing/NULL elements ...

有没有办法让bind_rows考虑空元素?

1 个答案:

答案 0 :(得分:0)

假设

  1. 列表中的所有数据框共享相同的变量名称和列数。
  2. 该嵌套列表中的第一个元素不是空列表。 (这只是为了方便我以后,您可以随意选择任何一个数据框元素。)
  3. 我的方法是将不是数据帧的元素更改为具有1行NA和具有其他数据帧的相同列名称的元素。

    VersionOverrides

    我相信这会解决你的问题。

    对于创建没有数据的数据帧,您可以在SO上引用这些线程: