首页 > 解决方案 > 将 R 数据帧写入信息图可读 JSON 文件

问题描述

我正在尝试将数据框写入 infogram 可以识别的 JSON 格式,以自动进行实时更新。我一直在使用 R 和 jsonlite 包。

例如:

df <- data.frame(X = c(1,2,3),
                 Y = c(5,7,8))
df

#  X Y
#1 1 5
#2 2 7
#3 3 8

我想出了:

require(jsonlite)

rbind(as.matrix(t(names(df))), 
      as.matrix(df)) %>% 
  toJSON(pretty = T) # or write_json(filename, pretty = T) to write straight to file

结果是:

[
  ["X", "Y"],
  ["1", "5"],
  ["2", "7"],
  ["3", "8"]
] 

所需的格式基本上是上述格式,但包含在一对额外的方括号中(注意第一个数组由列标题组成,然后每个后续数组都是一个观察值)。

[[
  ["X", "Y"],
  ["1", "5"],
  ["2", "7"],
  ["3", "8"]
]]

有没有简单的方法来实现这一目标?谢谢

标签: rjson

解决方案


require(jsonlite)

## The data.frame
df <- data.frame(X = c(1,2,3),
                 Y = c(5,7,8))

现在您可以将对象修改为列表,然后您将在 json 输出中获得相同的列表项:

mat <- list(rbind(as.matrix(t(names(df))), as.matrix(df)))

现在有了你想要的额外括号:

toJSON(mat, pretty = T)

推荐阅读