将元素列出到R中的数据帧

时间:2014-10-16 22:18:02

标签: r

我如何获取列表元素并将其转换为数据框,每个数据框名称与列表元素名称一致?

例如:

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

3 个答案:

答案 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