有没有更好的方法可以将巨大的列表(超过100k)转换为data.frame。
for (i in 1:length(google_20180623_list)) {
if (google_20180623_list[[i]]$status != "OK") next
name <- google_20180623_list[[i]]$result$name
formatted_address <- google_20180623_list[[i]]$result$formatted_address
place_id <- google_20180623_list[[i]]$result$place_id
geom <- data.frame(google_20180623_list[[i]]$result$geometry$location)
types <- google_20180623_list[[i]]$result$types
types <- paste(types, collapse = "/")
oa <- google_20180623_list[[i]]$result$opening_hours$weekday_text
if (is.null(oa)){
oa <- NA
} else {
oa <- as.data.frame(oa)
oa <- oa %>% separate(oa,into=c("days", "opening"), sep=": ", remove=T)
oa <- oa %>% spread(key = "days", value = "opening")
}
rating <- google_20180623_list[[i]]$result$rating
if (is.null(rating)) {rating<-NA}
price_level <- google_20180623_list[[i]]$result$price_level
if (is.null(price_level)) {price_level<-NA}
phone <- google_20180623_list[[i]]$result$international_phone_number
if (is.null(phone)) {phone<-NA}
website <- google_20180623_list[[i]]$result$website
if (is.null(website)) {website<-NA}
cb<-cbind(place_id
,name
,formatted_address
,geom
,phone
,website
,rating
,price_level
,oa
,types
)
google_20180623_list_unlist<-rbindlist(list(google_20180623_list_unlist,cb),fill = T)
}
此代码非常慢,需要24多个小时。任何想法?
数据来自google place details api。
感谢您的帮助。
答案 0 :(得分:0)
我认为,使用另一种编程语言来完成该任务将更加高效。尝试将其转换为文件,然后使用R读取。