2017-02-16 2 views
1

Предположим, что у меня есть JSON-файл, содержащий это:Реконструкция кадра данных, содержащего элементы со списками в R

[ 
    { 
    "x": 3, 
    "y": [3,4,5] 
    }, 
    { 
    "x": 6, 
    "y": [6,7,8] 
    } 
] 

Если загружен с помощью функции fromJSON в пакете jsonlite R следующим образом:

# Read the JSON data 
library(jsonlite) 
data <- fromJSON('[{"x":3,"y":[3,4,5]},{"x":6,"y":[6,7,8]}]') 

то x и y поля можно получить следующим образом:

> data$x 
[1] 3 6 
> data$y 
[[1]] 
[1] 3 4 5 

[[2]] 
[1] 6 7 8 

Предположим, вместо того, уже имея фрейм данных, я пытаюсь построить его следующим образом:

> x2 <- data$x 
> y2 <- data$y 
> df <- data.frame(x = x2, y = y2) 
Error in data.frame(x = x2, y = y2) : 
    arguments imply differing number of rows: 2, 3 

мы можем видеть, что кадр данных не могут быть восстановлены таким образом. Как я могу создать фрейм данных, содержащий списки?

К сожалению, для ясности:

> data <- fromJSON('[{"x":3,"y":[3,4,5]},{"x":6,"y":[6,7,8]}]') 
> class(data) 
[1] "data.frame" 

можно разобрать JSON построить фрейм данных, но этот метод я использовал выше, не может создать кадр данных. Я довольно новичок в R, поэтому я, наверное, делаю что-то глупое.

+0

Каким будет ваш ожидаемый результат? Поскольку в сообщении об ошибке четко указано, что 'x' и' y' имеют разное количество строк. –

+0

Для каждого x я думаю, что OP хочет список в y. –

+0

Спасибо, Ронак, хороший вопрос. Если я начну с фрейма данных (который я получил с помощью разбора JSON), почему я не могу перестроить кадр данных с использованием элементов исходного фрейма? –

ответ

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