使用 lapply 从 json 中提取数据
Extract data from json with lapply
我有一个很长的 json 文件,我想从中提取城市名称及其相应的海拔高度。结果应该是一个列表,其中 A 列包含城市名称,B 列包含海拔高度。
这里是 R 的一些数据:
l <- fromJSON('[{"_id": "CtNjHGG8asEvFyqsM","cronjobname": "Elev","cronjobid": "mmsibiZL4p42fL8jh",
"cronjobtyp": "importTestData","datasource": "importTestData","data": [{
"Station": "New York","Elev": 300},{ "Station": "London","Elev": 35}],
"createdAt": "2016-04-30T22:10:11.342Z","createdBy": null,"modifiedAt": "2016-04-30T22:10:11.342Z","modifiedBy": null}]')
这就是我想出的:
m <- lapply(
l[[1]]$data,
function(x) c(x$Station['Station'], x$Elev['Elev'])
)
m <- do.call(rbind, m)
不过,我知道这并不完整,应该是l[[1]]$data[[1]]$Station
才能进站,可惜我不能简单地使用[[x]]$Station
。我缺少什么或者我需要将其放入循环中以访问多个 x
?
这是你想要的吗?
m<-lapply(
l[[1]]$data,
function(x) c(x$Station, x$Elev)
)
m <- do.call(rbind, m)
> m
[,1] [,2]
[1,] "New York" "300"
[2,] "London" "35"
或者你可以使用这个:
m <- do.call(rbind, l[[1]]$data)
> m
Station Elev
[1,] "New York" 300
[2,] "London" 35
语句x$Station['Station']
等价于l[[1]]$data[[1]]$Station['Station']
所以里面什么都没有。
我有一个很长的 json 文件,我想从中提取城市名称及其相应的海拔高度。结果应该是一个列表,其中 A 列包含城市名称,B 列包含海拔高度。
这里是 R 的一些数据:
l <- fromJSON('[{"_id": "CtNjHGG8asEvFyqsM","cronjobname": "Elev","cronjobid": "mmsibiZL4p42fL8jh",
"cronjobtyp": "importTestData","datasource": "importTestData","data": [{
"Station": "New York","Elev": 300},{ "Station": "London","Elev": 35}],
"createdAt": "2016-04-30T22:10:11.342Z","createdBy": null,"modifiedAt": "2016-04-30T22:10:11.342Z","modifiedBy": null}]')
这就是我想出的:
m <- lapply(
l[[1]]$data,
function(x) c(x$Station['Station'], x$Elev['Elev'])
)
m <- do.call(rbind, m)
不过,我知道这并不完整,应该是l[[1]]$data[[1]]$Station
才能进站,可惜我不能简单地使用[[x]]$Station
。我缺少什么或者我需要将其放入循环中以访问多个 x
?
这是你想要的吗?
m<-lapply(
l[[1]]$data,
function(x) c(x$Station, x$Elev)
)
m <- do.call(rbind, m)
> m
[,1] [,2]
[1,] "New York" "300"
[2,] "London" "35"
或者你可以使用这个:
m <- do.call(rbind, l[[1]]$data)
> m
Station Elev
[1,] "New York" 300
[2,] "London" 35
语句x$Station['Station']
等价于l[[1]]$data[[1]]$Station['Station']
所以里面什么都没有。