我正在尝试读取几十万个JSON文件,并最终将它们放入dplyr对象中.但是JSON文件不是简单的键值解析,它们需要大量的预处理.预处理是经过编码的,效率相当高.但我遇到的挑战是将每条记录有效地加载到单个对象(data.table或dplyr对象)中.
这是非常稀疏的数据,我将有超过2000个变量,这些变量大部分都会丢失.每条记录可能有一百个变量集.变量将是字符,逻辑和数字的混合,我知道每个变量的模式.
我认为避免R为每次更新复制对象(或一次添加一行)的最佳方法是创建一个空数据框,然后在从JSON文件中提取后更新特定字段.但是在数据框中执行此操作非常慢,移动到数据表或dplyr对象要好得多,但仍希望将其减少到几分钟而不是几小时.请参阅下面的示例:
timeMe <- function() {
set.seed(1)
names = paste0("A", seq(1:1200))
# try with a data frame
# outdf <- data.frame(matrix(NA, nrow=100, ncol=1200, dimnames=list(NULL, names)))
# try with data table
outdf <- data.table(matrix(NA, nrow=100, ncol=1200, dimnames=list(NULL, names)))
for(i in seq(100)) {
# generate 100 columns (real data is in json)
sparse.cols <- sample(1200, 100)
# Each record is coming in as a list
# Each column is either a character, logical, or numeric
sparse.val <- lapply(sparse.cols, function(i) {
if(i …Run Code Online (Sandbox Code Playgroud)