我有一个嵌套列表,如下所示:
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"
Run Code Online (Sandbox Code Playgroud)
我想把它变成一个带有"name"和"state"列的数据框和两行,每行一个.但是当我尝试使用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
Run Code Online (Sandbox Code Playgroud)
我不确定发生了什么.这样做的正确方法是什么?
do.call(rbind.data.frame, mylist)
## name state
## 2 The Tucson IOT Meetup Group AZ
## 21 #SFMySQL Meetup CA
Run Code Online (Sandbox Code Playgroud)
该do.call函数有点像(l/s)apply函数,并允许函数累积连续调用的结果.该Reduce函数有时会实现相同的结果:
Reduce(rbind.data.frame, mylist)
## name state
##2 The Tucson IOT Meetup Group AZ
##21 #SFMySQL Meetup CA
Run Code Online (Sandbox Code Playgroud)
您甚至可以rbind通过以下方式"工作" Reduce:
Reduce(rbind, mylist)
## name state
##init "The Tucson IOT Meetup Group" "AZ"
## "#SFMySQL Meetup" "CA"
Run Code Online (Sandbox Code Playgroud)
最初认为可能是最好的结果.(我更喜欢提供字符值而不是因子的结果.)但是,当使用str()查看时,两种Reduce方法都会提供相当奇怪的结构.
| 归档时间: |
|
| 查看次数: |
1957 次 |
| 最近记录: |