将数据从JSON文件导入到R中

有没有办法将数据从JSON文件导入到R? 更具体地说,该文件是包含string字段,对象和数组的JSON对象的数组。 RJSON软件包不清楚如何处理这个http://cran.r-project.org/web/packages/rjson/rjson.pdf 。

首先安装rjson软件包:

 install.packages("rjson") 

然后:

 library("rjson") json_file <- "http://api.worldbank.org/country?per_page=10&region=OED&lendingtype=LNX&format=json" json_data <- fromJSON(paste(readLines(json_file), collapse="")) 

更新:从版本0.2.1开始

 json_data <- fromJSON(file=json_file) 

jsonlite会将JSON导入到数据框中。 它可以select性地平整嵌套的对象。 嵌套数组将是数据框架。

 > library(jsonlite) > winners <- fromJSON("winners.json", flatten=TRUE) > colnames(winners) [1] "winner" "votes" "startPrice" "lastVote.timestamp" "lastVote.user.name" "lastVote.user.user_id" > winners[,c("winner","startPrice","lastVote.user.name")] winner startPrice lastVote.user.name 1 68694999 0 Lamur > winners[,c("votes")] [[1]] ts user.name user.user_id 1 Thu Mar 25 03:13:01 UTC 2010 Lamur 68694999 2 Thu Mar 25 03:13:08 UTC 2010 Lamur 68694999 

另一个包是RJSONIO。 要转换一个嵌套列表,lapply可以帮助:

 l <- fromJSON('[{"winner":"68694999", "votes":[ {"ts":"Thu Mar 25 03:13:01 UTC 2010", "user":{"name":"Lamur","user_id":"68694999"}}, {"ts":"Thu Mar 25 03:13:08 UTC 2010", "user":{"name":"Lamur","user_id":"68694999"}}], "lastVote":{"timestamp":1269486788526,"user": {"name":"Lamur","user_id":"68694999"}},"startPrice":0}]' ) m <- lapply( l[[1]]$votes, function(x) c(x$user['name'], x$user['user_id'], x['ts']) ) m <- do.call(rbind, m) 

在你的例子中给出关于选票的信息。

如果URL是https,就像用于Amazon S3一样,那么请使用getURL

 json <- fromJSON(getURL('https://s3.amazonaws.com/bucket/my.json')) 

首先安装RJSONIO和RCurl软件包:

 install.packages("RJSONIO") install.packages("(RCurl") 
    Interesting Posts