我试图使用R的rjson库将200MB的JSON文件上传到R中,但我得到了Cannot fit vector over 1KB
错误。下面是我用来将JSON文件加载到R中的代码:
UnpackJSON <- function(filePath)
{
con <- file(filePath, "r")
input <- readLines(con, -1L)
# jsonData <- fromJSON(paste(input, collapse=""))
jsonData <- sapply(input, fromJSON)
close(con)
df <- data.frame(jsonData)
temp <- rownames(df)
df <- as.data.frame(t(df))
colnames(df) <- temp
rownames(df) <- NULL
return(df)
}
是否有一种方法来优化这段代码或另一种方式来加载这么大的文件到R?我很感谢任何意见。
为什么要使用sapply
逐行处理JSON数据?你不能直接说fromJSON(input)
吗?我怀疑问题可能是垃圾收集器在删除分析过程中生成的任何副本之前等待整个sapply
循环完成(另请参阅此处的注释)。因此,当向量化不起作用时(这是非常可取的),您可以尝试将sapply
循环更改为for
循环,看看是否有帮助。