我有一个很长的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
?
答案 0 :(得分:2)
这就是你想要的吗?
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']
所以其中没有任何内容。