当列表中的数据帧命名为NULL时,将列表转换为R中的数据帧

时间:2013-09-05 19:16:24

标签: r plyr reshape2

使用RCurl进行网页搜索后,我使用了XML的{​​{1}},现在有一个包含40个数据框的列表,其中包含40个两个变量的观察值。我想将其转换为100行和40列的单个数据帧。每个数据框中的第一列包含我想在单个数据框中成为列名的内容。这与我可以获得的MWE一样接近(实际列表中的每个数据帧都被命名为readHTMLTable):

NULL

以下是我希望实现的一般输出:

description <- c("name", "location", "age")
value <- c("mike", "florida", "25")
df1 <- data.frame(description, value)
description <- c("name", "location", "tenure")
value <- c("jim", "new york", "5")
df2 <- data.frame(description, value)
list <- list(df1, df2)

# list output
[[1]]
  description   value
1        name    mike
2    location florida
3         age      25

[[2]]
  description    value
1        name      jim
2    location new york
3      tenure        5

如上所述,我不知道如何通过MWE表示,我的问题是每个数据帧都被命名为library(reshape2) listm <- melt(list) dcast(listm, L1 ~ description) # dcast output L1 age location name tenure 1 1 25 florida mike <NA> 2 2 <NA> new york jim 5 ,因此没有唯一的标识符{{1}数据。

如何在NULL和/或cast处理此问题?

1 个答案:

答案 0 :(得分:2)

您可以在列表中每个data.frame的行上使用rep来获取L1列。然后直接投射:

# ll is your list of data.frames
ll.df <- cbind(L1 = rep(seq_along(ll), sapply(ll, nrow)), do.call(rbind, ll))

require(reshape2)
dcast(ll.df, L1 ~ description)
  L1  age location name tenure
1  1   25  florida mike   <NA>
2  2 <NA> new york  jim      5