【问题标题】:Extracting elements from a jsonlite parsed list in R从R中的jsonlite解析列表中提取元素
【发布时间】:2015-10-07 07:57:20
【问题描述】:

我已通过 jsonlite 将 .json 文件中的数据导入 R。不幸的是,尽管数据包含多个类别,但它仍显示为“列表 1”。

library(jsonlite)
wimbledon <- from JSON("wimbledon.json",flatten=TRUE)

我在全球环境中打开温网时得到以下信息:

wimbledon                      List of 1
 graph_data: 'data.frame': 1 obs. of 2 variables:
 ..$ term:chr "wimbledon"
 ..$data: List of 1
 .. ..$: 'data.frame': 165 obs. of 3 variables:
 .. .. ..$ matches : int [1:165] 0 0 0 0 0 0 0 0 ...
 .. .. ..$ year : int [1:165] 1851 1852 1853 1854 ...

我的问题是,是否有任何简单的方法来仅引用 $matches 和 $year,就像我在使用 wimbledon$matches 和 wimbledon$year 的数据框中所做的那样?我熟悉使用 wimbledon[[n]] 提取列表的某个元素。但是,这里的问题是我似乎已经将所有内容解析为 jsonlite 中的单个列表。抱歉,我无法添加可重现的示例。非常感谢您在将“匹配”和“年份”列提取为单独的数据框列时给我的任何帮助。

【问题讨论】:

  • 试试wimbledon$graph_data$data[[1]]$matches。数据的结构很有趣 - 我无法重新创建具有单行 (graph_data) 的 data.frame,其中第二列是列表,我认为这是不允许的。
  • @mattdevlin 非常感谢!那工作得很好。是的,我也对结构感到困惑,但不知何故,这似乎是可能的。请添加您的评论作为答案,我会接受

标签: r list dataframe jsonlite


【解决方案1】:

当列表中有未命名的值时,例如$: 'data.frame': 165 obs. of 3 variables:,则需要var[[n]] 语法

wimbledon$graph_data$data[[1]]$matches

wimbledon$graph_data$data[[1]]$year

将返回比赛和年份。

【讨论】:

    猜你喜欢
    • 2013-05-29
    • 2014-07-08
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多