我有一个数据框结构列表,如下所示:
让我们调用此列表列表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
答案 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)