我有一个很长的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']
,因此其中没有任何内容。