如何将openSkies获取的R6类航班对象转为数据框并导出CSV?
问题
我想用OpenSkies包提取香港国际机场(VHHH)的航班离港数据并导出成CSV,但把返回的R6类列表转成数据框时失败了,代码如下:
library(openSkies) library(R6) flights <- getAirportDepartures(airport="VHHH", startTime="2023-02-03 09:00:00", endTime="2023-02-05 11:00:00", timeZone="Asia/Hong_Kong",maxQueryAttempts =1) dataSet <- do.call(rbind, flights)
问题截图:
解决方案
getAirportDepartures返回的是R6对象的列表,直接用rbind合并行不通,得先把每个R6对象转成数据框再处理:
- 先用
lapply遍历所有航班对象,调用它们自带的as.data.frame()方法,把每个R6对象转成数据框:
flight_dfs <- lapply(flights, function(flight) flight$as.data.frame())
- 再把数据框列表合并成一个大的数据框:
dataSet <- do.call(rbind, flight_dfs)
- 最后导出成CSV:
write.csv(dataSet, "vhhh_departures.csv", row.names = FALSE)
要是遇到列名不一致的情况,换用dplyr的bind_rows合并更稳妥:
library(dplyr) dataSet <- bind_rows(flight_dfs)
内容的提问来源于stack exchange,提问作者Wesley Lo
相关产品推荐
相关产品推荐

