Есть вопрос с очень похожим названием ( cbind работает очень медленно ), но он не помогает мне с моей проблемой. Я получаю 10+ JSON файлов со 100 переменными каждый и пытаюсь создать один большой data.frame / table с 1000 столбцами. На практике я использую не один и тот же JSON -файл, как в примере, а другие. В идеале только проблема c строка cx <- cbind(cx, bx)
будет ускоряться, поскольку другие строки (unlist, as.data.table) хорошо работают для меня, и я не знаю, что еще использовать. Я знаю, что cbind работает медленно, но есть ли у меня альтернативы? В идеале с Base R.
library(jsonlite)
library(data.table)
starttime <- Sys.time()
for (i in 1:10) { # loop through all 10 json files
zz <- Sys.time() # measuring the time for each loop
urlx <- "http://mysafeinfo.com/api/data?list=englishmonarchs&format=json"
jsnx <- fromJSON(urlx)
if(i==1) {
ax <- unlist(jsnx)
bx <- as.data.table(ax)
cx <- bx
}
for (j in 1:100) { # loop through all 100 variables in each file
ax <- unlist(jsnx)
bx <- as.data.table(ax)
cx <- cbind(cx, bx) # <---- VERY SLOW ----
}
zz <- round(Sys.time()-zz,1)
print(sprintf("%1.1f", zz))
flush.console()
}
endtime <- Sys.time()
endtime-starttime
Это становится все медленнее и медленнее с большим количеством файлов, вот мои тайминги.
[1] "0.7"
[1] "1.3"
[1] "1.3"
[1] "1.6"
[1] "2.1"
[1] "2.2"
[1] "2.5"
[1] "3.2"
[1] "3.4"
[1] "3.5"