R中包含列表元素的数据帧的重建

R中包含列表元素的数据帧的重建,r,list,dataframe,jsonlite,R,List,Dataframe,Jsonlite,假设我有一个包含以下内容的JSON文件: [ { "x": 3, "y": [3,4,5] }, { "x": 6, "y": [6,7,8] } ] 如果使用jsonlite R包中的fromJSON函数加载此文件,如下所示: # Read the JSON data library(jsonlite) data <- fromJSON('[{"x":3,"y":[3,4,5]},{"x":6,"y":[6,7,8]}]') >

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

[
  {
    "x": 3,
    "y": [3,4,5]
  },
  {
    "x": 6,
    "y": [6,7,8]
  }
]
如果使用jsonlite R包中的fromJSON函数加载此文件,如下所示:

# Read the JSON data
library(jsonlite)
data <- fromJSON('[{"x":3,"y":[3,4,5]},{"x":6,"y":[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
假设没有数据帧,我尝试按如下方式构建它:

# Read the JSON data
library(jsonlite)
data <- fromJSON('[{"x":3,"y":[3,4,5]},{"x":6,"y":[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相当陌生,所以我可能在做一些傻事。

你可以通过

data.frame(x = data$x, y = I(data$y))

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

另请参见。

您可以通过

data.frame(x = data$x, y = I(data$y))

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

另请参见。

对于R中的数据帧,行数必须相等,因为其工作原理类似于矩阵。请问,为什么您需要数据框而不是列表?编辑:也检查一下。你期望的输出是什么?因为错误信息清楚地表明x和y有不同的行数。对于每个x,我认为OP需要y中的列表。这是一个好问题。在我粘贴的小示例中,我可以使用列表,但它是一个更大项目的一部分,在这个项目中,结果需要是一个数据帧。我只是不明白为什么我可以用jsonlite包得到一个数据帧,它的结构如图所示,但是我不能重新创建数据帧。谢谢,Ronak,好问题。如果我从使用JSON解析得到的数据帧开始,为什么我不能使用原始数据帧的元素重建数据帧呢?对于R中的数据帧,行数必须相等,因为它的工作方式类似于矩阵。请问,为什么您需要数据框而不是列表?编辑:也检查一下。你期望的输出是什么?因为错误信息清楚地表明x和y有不同的行数。对于每个x,我认为OP需要y中的列表。这是一个好问题。在我粘贴的小示例中,我可以使用列表,但它是一个更大项目的一部分,在这个项目中,结果需要是一个数据帧。我只是不明白为什么我可以用jsonlite包得到一个数据帧,它的结构如图所示,但是我不能重新创建数据帧。谢谢,Ronak,好问题。如果我从使用JSON解析得到的数据帧开始,为什么不能使用原始数据帧的元素重建数据帧?