【问题标题】:How do I create a data frame with internal lists and vectors in R?如何在 R 中创建具有内部列表和向量的数据框?
【发布时间】:2020-04-01 14:30:06
【问题描述】:

我正在尝试使用 jsonlite::fromJSON 解析 json,但各种疯狂的东西又回来了。 This question 显示了一个示例,其中我在文件 (blarg.json) 中提供 json,并检查返回值。重复:

blarg.json文件:

[{  "id": 211,
    "sub_question_skus": {  "0": 329, "behavior": 216 } },
 {  "id": 333,
    "sub_question_skus": [  340, 341 ] },
 {  "id": 345,
    "sub_question_skus": [  346, 352 ] },
 {  "id": 444,
    "sub_question_skus": null }]

代码:

library(jsonlite)

df <- fromJSON('blarg.json')

RStudio 查看器中带有嵌入列表和向量的数据框:

如何在不使用 jsonlite 的情况下,用简单的 R 代码从该问题创建这个确切的数据框?它会帮助我创建测试用例。

如果它可以自动从数据框创建代码(如 SQL 中的“SHOW SELECT”),则会得到奖励。

【问题讨论】:

  • dput 做你想做的事吗?
  • 为什么是的,是的!如果您将其作为答案提交,我会接受。

标签: r


【解决方案1】:

您正在寻找dput()

阅读How to make a great R reproducible example,了解有关该功能的更多信息以及制作可重现示例的其他技巧。

【讨论】:

    【解决方案2】:
    data.frame(id = df$id,
                x = unlist(sapply(df$sub_question_skus, function(i) ifelse(is_empty(i[1]), NA, i[1]))),
                y = unlist(sapply(df$sub_question_skus, function(i) ifelse(is_empty(i[2]), NA, i[2]))) )
    
    #   id   x   y
    # 1 211 329 216
    # 2 333 340 341
    # 3 345 346 352
    # 4 444  NA  NA
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-07
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      • 1970-01-01
      • 2020-07-13
      • 1970-01-01
      • 2021-07-11
      相关资源
      最近更新 更多