重建包含R

时间:2017-02-16 12:18:10

标签: r list dataframe jsonlite

假设我有一个包含以下内容的JSON文件:

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

如果使用fromJSON R包中的jsonlite函数加载,如下所示:

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

然后可以像这样访问xy字段:

> 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很新,所以我可能会做些傻事。

1 个答案:

答案 0 :(得分:4)

您可以通过

获得所需的结构
data.frame(x = data$x, y = I(data$y))

  x       y
1 3 3, 4, 5
2 6 6, 7, 8

另见Create a data.frame where a column is a list