Предположим, что у меня есть 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, поэтому я, наверное, делаю что-то глупое.
Каким будет ваш ожидаемый результат? Поскольку в сообщении об ошибке четко указано, что 'x' и' y' имеют разное количество строк. –
Для каждого x я думаю, что OP хочет список в y. –
Спасибо, Ронак, хороший вопрос. Если я начну с фрейма данных (который я получил с помощью разбора JSON), почему я не могу перестроить кадр данных с использованием элементов исходного фрейма? –