如何从JSON访问数据框的正确列名

时间:2017-08-31 15:10:19

标签: json r dataframe dt jsonlite

我有一个简单的json字符串,我通过URL读入。

jsonFile <- jsonlite::fromJSON(RCurl::getURL("http://server.com/jsonData.php"))

[
  {
    "X": "A",
    "Y": 1,
    "Z": 2
  },
  {
    "X": "B",
    "Y": 3,
    "Z": 4
  },
  {
    "X": "C",
    "Y": -4,
    "Z": -3
  },
  {
    "X": "D",
    "Y": -2,
    "Z": -1
  }
]

然后我尝试根据数值对列进行颜色编码。如果Y或Z列为正,则为绿色,如果为负,则为红色。我尝试使用以下函数:

DT::formatStyle(jsonFile, c('Y', 'Z'), color = 'white', backgroundColor = styleInterval(0, c('green','red')))

但它会产生此错误: name2int中的错误(名称,名称,rownames):   您指定了列:X,Y,但数据的列名称是

当我调用dataframe函数的名称时,我得到:

names(jsonFile)
[1] "X" "Y"    "Z"  

我认为这与我如何访问数据框本身有关,因为它来自JSON数据结构,但我还没有加密如何恰当地调用列名。在使用滚边时我也有同样的问题。

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:0)

这不是JSON-to-data.frame转换的问题,而是来自您正在尝试的DT格式

来自?formatStyle

的帮助文件
  

table - 从datatable()

创建的表objet

因此,需要从formatStyle函数创建datatable()的输入。您可以直接在函数调用中执行此操作:

formatStyle(datatable(jsonFile), c('Y', 'Z'), color = 'white', 
          backgroundColor = styleInterval(0, c('green','red')))

enter image description here