2017-08-31 53 views
1

我有一个简单的json字符串,我通过URL读入。如何从JSON访问正确的数据帧列名称

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,但对列名数据

当我调用数据框函数的名字,我得到:

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

我觉得这与我是如何访问数据做框架本身,因为它来自JSON数据结构,但我还没有加密如何正确调用列名称。在使用管道时也遇到同样的问题。

任何帮助,非常感谢。

感谢

回答

0

这是不符合JSON到data.frame转换的问题,而是从DT格式化您尝试

从帮助文件?formatStyle

table - a table objet created from datatable()

因此,需要从datatable()函数创建到formatStyle的输入。你可以在你的函数调用直接做到这一点:

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

enter image description here