Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将缺少对象的命名向量列表转换为data.frame_R_Type Conversion - Fatal编程技术网

将缺少对象的命名向量列表转换为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