我在R中有以下数据:
list0 <- list(ff = 45,gg = 23)
list1 <- list(a = 2, b=list0)
LIST <- list(mylist = list1)
我想将此列表转换为数据帧并获取如下输出数据帧,其中包含以下列标题命名约定:
a b.ff b.gg
1 2 45 23
感谢任何帮助。
答案 0 :(得分:5)
LIST
步骤是不必要的:
> data.frame(list1)
a b.ff b.gg
1 2 45 23
答案 1 :(得分:4)
vec <- unlist(LIST)
names(vec) <- sub("mylist.", "", names(vec))
dt <- data.frame(as.list(vec))
dt
a b.ff b.gg
1 2 45 23
答案 2 :(得分:2)
您还可以do.call
与data.frame
一起构建data.frame并包含unname
以删除第一个列表级别的名称。
mydf <-do.call(data.frame, unname(LIST))
mydf
a b.ff b.gg
1 2 45 23
确保对象具有所需的结构。
str(mydf)
'data.frame': 1 obs. of 3 variables:
$ a : num 2
$ b.ff: num 45
$ b.gg: num 23