【发布时间】:2019-12-03 20:46:26
【问题描述】:
我已使用 walkscore API 为经纬度列表生成输出
数据集的表示:
tibble::tribble(
~Lat, ~Long,
39.75454546, -82.63637088,
40.85117794, -81.47034464,
40.53956136, -74.33630685,
42.16066679, -71.21368025,
39.27048579, -119.5770782,
64.82534285, -147.6738774
)
我的代码:
library(walkscoreAPI)
library(rjson)
data = read.csv(file="geocode_finalcompiled.csv", header=TRUE, sep=",")
attach(data)
#create empty list
res = list()
# for loop through a file
for(i in 1:500){
res[i] = list(getWS(data$Long[i],data$Lat[i],"mykey"))
}
显示结果
分辨率
> res
[[1]]
$status
[1] 1
$walkscore
[1] 2
$description
[1] "Car-Dependent"
$updated
[1] "2019-03-28 21:43:37.670012"
$snappedLong
[1] -82.6365
$snappedLat
[1] 39.7545
如您所见,输出为 json 格式。我的目标是把它变成一个数据框,其中每个值都显示在每个标题下,并且可以放入 csv 中。
我试过了:
重新格式化
但出现以下错误:
as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = stringsAsFactors) 中的错误: 无法将“WalkScore”类强制转换为 data.frame
有什么办法可以解决这个问题?
【问题讨论】:
-
输出是
list而不是json还是我错了?取消分类并根据需要将其设为 df。 -
@NelsonGon 你如何取消分类并使其成为 df?
-
无法测试,因为我没有安装这个包。试试
as.data.frame(unclass(res))。或者,sapply(res, class)的输出是什么? -
> sapply(res, class) [1] "WalkScore" "WalkScore" "WalkScore" "WalkScore" "WalkScore" "WalkScore"
-
是的,我放在这里的代表是我的数据集的表示