Как прочитать файл новой строки с разделителями JSON из R? - PullRequest
2 голосов
/ 26 января 2020

У меня есть символ новой строки (т. Е. Каждый JSON объект ограничен одной строкой в ​​файле):

{"name": "json1"}
{"name": "json2"}
{"name": "json3"}

В Python Я легко могу прочитать его следующим образом (я должен использовать кодировка encoding='cp850' для чтения моих реальных данных):

import json

objs = []
with open("testfile.json", encoding='cp850') as f:
    for line in f:
        objs.append(json.loads(line))

Как я могу сделать аналогичный трюк в R?

В конце я хочу получить data.frame:

library("jsonlite")
library("data.table")

d <- fromJSON("testfile.json", flatten=FALSE)
df <- as.data.frame(d)

Ответы [ 2 ]

1 голос
/ 26 января 2020

Мы можем использовать stream_in от jsonlite

library(jsonlite)
out <- stream_in(file('testfile.json'))
out
#    name
#1 json1
#2 json2
#3 json3

str(out)
#'data.frame':  3 obs. of  1 variable:
#$ name: chr  "json1" "json2" "json3"
1 голос
/ 26 января 2020

Вы можете прочитать и обработать данные в правильном формате, а затем проанализировать JSON

jsonlite::fromJSON(sprintf('[%s]', paste(readLines('text.json', warn = FALSE), 
                                         collapse = ',')))

#    name
# 1 json1
# 2 json2
# 3 json3

(вы можете использовать одну из много альтернатив как пакет JSON например,

  • jsonlite более R -подобный пакет, так как он в основном будет работать с фреймами данных
  • RJSONIO более Python -i c рабочий пакет в основном со списками

или еще одним)

...