2017-06-02 10 views
0

私は、大きな値のファイルを大量の値のペアで埋めました。キーはIDであり、値は巨大なjsonオブジェクトです。私はこのデータファイルをRのdfに変換しようとしていましたが、データを2列のテーブルとしてインポートし、その値をデータフレームに変換しました。JSONをDFに変換するR

jsonを検証した後でもこのエラーが発生します。以下

Error: lexical error: invalid string in json text.

       [{ f: { SEQNUM: [ 455043, 455044, 
       (right here) ------^ 

私のコード

part00013 <- read.table(PatientData, sep = '\t', header = F, as.is = T) 
colnames(part00013) <- c('k','v') 
make_indexDateLists <- function(x) { 
# x['v'] <- lapply(x['v'], function(y) as.character(y)) 
# x['v'] <- lapply(x['v'], function(y) substr(y,1, nchar(y)-1)) 
# x['v'] <- lapply(x['v'], function(y) substr(y,2,nchar(y)))    
    x["v"] <- lapply(as.character(x["v"]), function(y) jsonlite::fromJSON(y,simplifyVector = T)) 

    #do assignpatienttocohorts 

    x["v"] <- lapply(x["v"], function(y) RJSONIO::toJSON(y)) 

    cbind(x$k, x$v) 
} 

make_indexDateLists(part00013) 

であり、ここでサンプルファイルは、それが不正JSONですが、あなたは、有効なJSONに変換することができhttps://drive.google.com/open?id=0B6hKduYaYwdJQ3BwbUpNSW9EZk0

+0

JSONのさまざまなパッケージを無視して、私はそれらのすべてを試しました – dk123456

+0

あなたは本当に自分の能力対パッケージを判断するために迅速です。 – hrbrmstr

答えて

1

です:

library(stringi) 
library(jsonlite) 
library(tidyverse) 

tmp <- readLines("oneline_part00013") 

parts <- stri_split_fixed(tmp, "\t", 2)[[1]] 

fromJSON(parts[2], flatten = FALSE) %>% 
    glimpse() 
## Observations: 1 
## Variables: 7 
## $ f <data.frame> 455043, 455044, 455045, 455046, 455047, 455048, 45504... 
## $ s <data.frame> 246549, 246550, 246551, 246552, 246553, 246554, 24655... 
## $ i <data.frame> 8224, 8788, 770102, 30, 10, 30, 3301, 3301, 3301, 192... 
## $ d <data.frame> 1114386, 1114387, 1114388, 1114389, 1114390, 1114391,... 
## $ o <data.frame> 162072527, 162072528, 162072529, 162072530, 162072531... 
## $ t <data.frame> 408352, 408353, 408354, 408355, 408356, 408357, 40835... 
## $ a <data.frame> 36527, 42259, 35562, 42458, 39119, 30, 10, 30, 20, 30... 

flatten = TRUEすべてのdata.frame列のネストを解除します(450cを超えるとその通り)

関連する問題