我已从以下site下载了一些数据作为zip文件,并将其提取到我的计算机上。现在,我无法打开包含的json数据文件。
运行以下代码:
install.packages("rjson")
library("rjson")
comp <- fromJSON("statsbomb/data/competitions")
出现此错误:
fromJSON(“ statsbomb / data / competitions”)错误:意外字符's'
还有一种方法可以一次加载所有文件,而不是每次都编写单个语句吗?
答案 0 :(得分:1)
这就是我所做的(Unix系统)。
git clone https://github.com/statsbomb/open-data.git
setwd("path to directory where you cloned the repo")
jsonlite::fromJSON("competitions.json")
使用rjson
:rjson::fromJSON(file="competitions.json")
.json
个文件移动到一个目录,然后使用lapply/assign
将对象分配给您的环境。结果(单个文件):
competition_id season_id country_name
1 37 4 England
2 43 3 International
3 49 3 United States of America
4 72 30 International
competition_name season_name match_updated
1 FA Women's Super League 2018/2019 2019-06-05T22:43:14.514
2 FIFA World Cup 2018 2019-05-14T08:23:15.306297
3 NWSL 2018 2019-05-17T00:35:34.979298
4 Women's World Cup 2019 2019-06-21T16:45:45.211614
match_available
1 2019-06-05T22:43:14.514
2 2019-05-14T08:23:15.306297
3 2019-05-14T08:02:00.567719
4 2019-06-21T16:45:45.211614
答案 1 :(得分:1)
除非您指定要提供文件(fromJSON
),否则函数fromJSON(file = "competitions.json")
将JSON字符串作为第一个参数。
您提到的错误来自试图将'statsbomb/data/competitions'
解析为字符串而不是文件名的函数。但是,在JSON中,所有内容都括在方括号中,字符串在引号内。因此,s
中的"statsbomb"
不是有效的第一个字符。
要读取所有json文件,您可以执行以下操作:
lapply(dir("open-data-master/",pattern="*.json",recursive = T), function(x) {
assign(gsub("/","_",x), fromJSON(file = paste0("open-data-master/",x)), envir = .GlobalEnv)
})
但这需要很长时间才能完成!您可能应该详细说明此功能。例如。在运行lapply调用之前,将通过dir
获得的文件列表分成50个块。