我如何获取列表元素并将其转换为数据框,每个数据框名称与列表元素名称一致?
例如:
exlist <- list(west=c(2,3,4), north=c(2,5,6), east=c(2,4,7))
我绊倒的地方在于对唯一数据帧的实际命名 - 我无法弄清楚如何使用for()循环或lapply来执行此操作:
for(i in exlist) {
i <- data.frame(exlist$i)
}
给了我一个名为i的空数据框,而我期望制作三个数据帧(一个叫做west,另一个叫做north,另一个叫做east)
当我使用lapply语法并调用单个列表元素名称时,我得到空数据帧:
lapply(exlist, function(list) i <- data.frame(list["i"]))
产量
data frame with 0 columns and 0 rows
> $west
list..i..
1 NA
$north
list..i..
1 NA
$east
list..i..
1 NA
答案 0 :(得分:3)
如果您想将列表元素转换为data.frame
,则可以尝试
lapply(exlist, as.data.frame)
或(由@Richard建议)取决于您所需的输出:
lapply(exlist, as.data.frame.list)
始终建议将多个数据框保留在列表中而不是污染您的全局环境,但如果您坚持这样做,则可以使用list2env
(不要这样做)这个),例如:
list2env(lapply(exlist, as.data.frame.list), .GlobalEnv)
答案 1 :(得分:0)
这应该创建你想要的三个对象:
df.names <- "value" ## vector with column names here
for (i in names(exlist)) setNames(assign(i, data.frame(exlist[[i]])), df.names)
答案 2 :(得分:0)
My Answer针对类似问题。
ID Status
1 0
1 0
1 0
2 0
2 1
2 NA
3 0
3 1
3 NA
3 NA