用lapply从json中提取数据

时间:2016-05-10 13:16:36

标签: r lapply rjsonio

我有一个很长的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

1 个答案:

答案 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']所以其中没有任何内容。