【问题标题】:Export JSON data frame in R formatting以 R 格式导出 JSON 数据框
【发布时间】:2019-03-11 14:17:04
【问题描述】:

我在将我的 R 数据框或表格的数据格式化为我想要的 JSON 文件时遇到了一些问题。

这是我想要的格式。

{ "PercentileFromR":
  [ "499 to 516", "517 to 534", "535 to 552", "553 to 569", "570 to 586", "587 to 604", "605 to 622"],
  [ "0", "7", "38", "124", "271", "388", "442"],
  [ "4", "6", "35", "68", "81", "71", "33"]
]
}

我的代码是

col1 <- c("499 to 516","517 to 534","535 to 552","553 to 569","570 to 586","587 to 604","605 to 622")
col2 <- c("0","7","38","124","271","388","442")
col3 <- c("4","6","35","68","81","71","33")
tableData <- rbind(col1, col2, col3)

install.packages('jsonlite', dependencies=TRUE, repos='http://cran.rstudio.com/')
library(jsonlite)
exportJSON <- toJSON(tableData, pretty = TRUE)
write(exportJSON, "output.json")

但这就是我得到的

[
  ["499 to 516", "517 to 534", "535 to 552", "553 to 569", "570 to 586", "587 to 604", "605 to 622"],
  ["0", "7", "38", "124", "271", "388", "442"],
  ["4", "6", "35", "68", "81", "71", "33"]
]

我能够得到这个,但它仍然不是我想要的格式:

{"binCategories":"499 to 516","plot1binCount":"0","plot2binCount":"4","NA":"517 to 534","NA":"7","NA":"6","NA":"535 to 552","NA":"38","NA":"35","NA":"553 to 569","NA":"124","NA":"68","NA":"570 to 586","NA":"271","NA":"81","NA":"587 to 604","NA":"388","NA":"71","NA":"605 to 622","NA":"442","NA":"33"}

【问题讨论】:

    标签: r json formatting jsonlite


    【解决方案1】:

    在转换为 JSON 之前将数据框转换为命名列表:

    library(jsonlite)
    tableData <- rbind(col1, col2, col3)
    
    #make a list and then name the elements.
    tableData<-list(tableData)
    names(tableData)<-"PercentileFromR"
    
    exportJSON <- toJSON(tableData, pretty = TRUE)
    exportJSON
    
    # {
    #    "PercentileFromR": [
    #       ["499 to 516", "517 to 534", "535 to 552", "553 to 569", "570 to 586", "587 to 604", "605 to 622"],
    #       ["0", "7", "38", "124", "271", "388", "442"],
    #       ["4", "6", "35", "68", "81", "71", "33"]
    #       ]
    # } 
    

    【讨论】:

      【解决方案2】:

      您可以使用带有一些正则表达式的gsub 来操作exportJSON 对象:

      exportJSON <- gsub("\\[\n", "\\{ \"PercentileFromR\":\n", exportJSON)
      exportJSON <- gsub("\n\\]", "\n\\]\n\\}", exportJSON)
      exportJSON
      

      输出是:

      { "PercentileFromR":
        ["499 to 516", "517 to 534", "535 to 552", "553 to 569", "570 to 586", "587 to 604", "605 to 622"],
        ["0", "7", "38", "124", "271", "388", "442"],
        ["4", "6", "35", "68", "81", "71", "33"]
      ]
      } 
      

      【讨论】:

        猜你喜欢
        • 2017-03-07
        • 2017-01-05
        • 2012-11-23
        • 2021-07-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-19
        相关资源
        最近更新 更多