我有大量的35MB json文件(两年一小时一个) - 它们是来自气象站的录音,每5秒(720 / h)有一个记录。他们需要大约45秒才能导入R,但我希望能够通过它们并提取单个记录。
以下是一个例子:
library(jsonlite)
x <- list(one = list(b = 0.1, c = 0.3),
two = list(b = 0.2, c = 0.2))
y <- toJSON(x)
setwd(tempdir())
writeLines(y, 'foo.json')
从文件foo.json
,我希望能够只读取元素1或元素1 b
对于那些对非繁琐案例感兴趣的人,在Jan 5 2018 is here的这个文件中,我想导入名为&#39; spectrum&#39;的 n 元素。
答案 0 :(得分:2)
您可以使用系统JSON解析器,并通过?system
命令控制它。
例如,我喜欢jq
(如果您有兴趣,还有一个R pacakge,称为jqr
)
## install jq from
## https://stedolan.github.io/jq/download/
## print the result of extracting 'one'
curlString <- paste0("cat '", tempdir(), "/foo.json' | jq -r '.one'")
system(curlString)
# {
# "b": [
# 0.1
# ],
# "c": [
# 0.3
# ]
# }
## return the result of extracting 'one.b' to R
curlString <- paste0("cat '", tempdir(), "/foo.json' | jq -r '.one.b'")
res <- system(curlString, intern = T)
paste0(res, collapse = "")
# "[ 0.1]"