r - as.data.frame 将嵌套列表展平为单行,而不是为每条记录创建行

标签 r dataframe

这个问题在这里已经有了答案:





Convert a list to a data frame

(24 个回答)


7年前关闭。




我有一个嵌套列表,如下所示:

mylist <- vector("list", 2)
mylist[[1]]$name <- "The Tucson IOT Meetup Group"
mylist[[1]]$state <- "AZ"
mylist[[2]]$name <- "#SFMySQL Meetup"
mylist[[2]]$state <- "CA"

mylist
[[1]]
[[1]]$name
[1] "The Tucson IOT Meetup Group"

[[1]]$state
[1] "AZ"


[[2]]
[[2]]$name
[1] "#SFMySQL Meetup"

[[2]]$state
[1] "CA"

我想把它变成一个数据框,其中包含“名称”和“状态”列以及两行,每条记录一行。但是当我尝试使用 as.data.frame 来执行此操作时,我会返回单行数据,每个记录的变量都有单独的列,如下所示:
myframe <- as.data.frame(mylist)
myframe
                              name state          name.1 state.1
1 The Tucson IOT Meetup Group    AZ #SFMySQL Meetup      CA

我不确定发生了什么。这样做的正确方法是什么?

最佳答案

do.call(rbind.data.frame, mylist)
##                           name state
## 2  The Tucson IOT Meetup Group    AZ
## 21             #SFMySQL Meetup    CA
do.call函数有点像 (l/s)apply 函数,它允许函数累积连续调用的结果。 Reduce函数有时会实现相同的结果:
 Reduce(rbind.data.frame, mylist)
##                          name state
##2  The Tucson IOT Meetup Group    AZ
##21             #SFMySQL Meetup    CA

你甚至可以得到rbindReduce 一起“工作” :
Reduce(rbind, mylist)
##     name                          state
##init "The Tucson IOT Meetup Group" "AZ" 
##     "#SFMySQL Meetup"             "CA" 

最初认为这可能是最好的结果。 (我更喜欢提供字符值而不是因子的结果。)然而,当使用 str() 查看时,这两种 Reduce 方法都提供了相当奇怪的结构。

关于r - as.data.frame 将嵌套列表展平为单行,而不是为每条记录创建行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25962975/

相关文章:

r 按条件和因子组的子集行

python - 将 Pandas 数据框汇总为半小时一次

python - Pandas 将 int 值转换为数据框中的 float

python - 如何使用 pandas 间隔来查找值,以填充另一个数据框

python - 如何使用 Pandas 将二维表 (DataFrame) 反转为一维列表?

r - 如何将大量模型传递给gather_predictions

R;如何解决 "expired PostgreSQLConnection"错误?

r - 对所有数据进行子集化,每个数据都有以下不同的数字

html - R - 将唯一的 HTML/XML 消息解析为数据框

python - 根据来自其他两个 DataFrame 的索引合并两个 DataFrame