2013-05-22 2 views
0

Я пытаюсь использовать Rjson-библиотеку R, чтобы загрузить файл JSON размером 200 МБ в R, но я получил ошибку Cannot fit vector over 1KB. Вот код, который я использовал, чтобы загрузить файл в формате JSON в R:Загрузка 200 МБ файла 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? Я ценю любой вклад.

+0

Хорошо. Можно ли даже загрузить такой большой набор данных в R? – Dombey

ответ

2

Зачем вам обрабатывать строку данных JSON в строке с помощью sapply? Не могли бы вы просто сказать fromJSON(input)? Я подозреваю, что проблема может заключаться в том, что сборщик мусора ждет завершения цикла sapply до удаления любых копий, которые были сделаны в процессе анализа (см. Также комментарии here). Поэтому, когда векторизация не работает (что очень важно), вы можете попробовать и изменить цикл sapply на цикл for и посмотреть, поможет ли это.

Смежные вопросы