将缺少对象的命名向量列表转换为data.frame
有许多示例可以将命名向量列表转换为将缺少对象的命名向量列表转换为data.frame,r,type-conversion,R,Type Conversion,有许多示例可以将命名向量列表转换为data.frame,但它们假设每个列表元素中的向量都具有相同的名称。我遇到的情况是,并非所有元素都有命名元素。例如: x <- list( a = c(id = "one", name = "Robert", remarks = "none" ), b = c(id = "two", name = "Edgar"
data.frame
,但它们假设每个列表元素中的向量都具有相同的名称。我遇到的情况是,并非所有元素都有命名元素。例如:
x <- list(
a = c(id = "one", name = "Robert", remarks = "none" ),
b = c(id = "two", name = "Edgar" ),
c = c(id = "three", name = "Edward", remarks = "stupid")
)
像这样
a b c
id one two three
name Robert Edgar Edward
remarks none <NA> stupid
abc
我是一二三
姓名罗伯特·埃德加·爱德华
一点也不愚蠢
有没有简单的方法,或者我必须推出自己的函数(没问题,但如果有函数,我就不必这么做)。在base R中,您可以执行以下操作:
cols a b c
#>我是一二三
#>姓名罗伯特·埃德加·爱德华
#>一点也不愚蠢
获取唯一的名称,然后将原始列表子集。当列表中没有该项时,它将返回NA,这将确保长度都相同,然后我们将转换为data.frame:
xNames <- unique(unlist(sapply(x, names)))
data.frame(lapply(x, "[", xNames))
# a b c
# id one two three
# name Robert Edgar Edward
# remarks none <NA> stupid
xname谢谢。我更喜欢这个,因为它还使用了as.data.frame
函数,因此可以很好地插入我的代码中。
xNames <- unique(unlist(sapply(x, names)))
data.frame(lapply(x, "[", xNames))
# a b c
# id one two three
# name Robert Edgar Edward
# remarks none <NA> stupid