用NULL

时间:2018-02-14 17:34:03

标签: r dataframe

我有一个数据框结构列表,如下所示:

让我们调用此列表列表A:

$ :'data.frame':      1 obs. of 3 variables:
 ..$ a             :chr a1
 ..$ b             :chr b1
 ..$ c             :chr c1

$ : NULL

$ :'data.frame':      1 obs. of 3 variables:
 ..$ a             :chr a3
 ..$ b             :chr b3
 ..$ c             :chr c3

如何保留数据的顺序,将记录保留为NA为NA并形成这样的数据帧?

     a    b    c
1:  a1    b1   c1
2:  NA    NA   NA
3:  a3    b3   c3

我试过用:

listA <- data.frame(do.call(rbind, listA))

但最终结果会跳过第二行,变成这样:

     a    b    c
1:  a1    b1   c1
2:  a3    b3   c3

1 个答案:

答案 0 :(得分:3)

如果NA为NULL,我们可以创建条件,然后执行rbindlist

rbindlist(lapply(listA, function(x) if(is.null(x)) data.frame(a = NA, b = NA, c= NA) else x))
#    a  b  c
#1: a1 b1 c1
#2: NA NA NA
#3: a3 b3 c3

另一种选择可能是根据NULL(对于NULL元素返回0)来分配lengths,以使用NA元素分配'data.frame',然后执行rbindlist

listA[!lengths(listA)] <-  list(data.frame(a = NA, b = NA, c = NA))
rbindlist(listA)