gpt4 book ai didi

r - 如何使用R中的子代写入json

转载 作者:行者123 更新时间:2023-12-03 13:58:31 25 4
gpt4 key购买 nike

我想将R data.frame转换为JSON对象,以便将其用于与d3.js进行数据可视化。我发现了很多问题,询问如何将JSON转换为R,但是很少有关于如何将数据从R写入JSON的问题。

一个特殊的问题是,JSON文件需要通过使用因素(即data.frame的列)进行嵌套。我认为从嵌套列表编写可能是一种解决方案,但是我已经无法从data.frame创建嵌套列表了:(

我已经举了一个例子:

这代表了我的data.frame(称为“ MyData”)。

ID  Location Station   Size Percentage
1 Alpha Zeta Big 0.63
2 Alpha Zeta Medium 0.43
3 Alpha Zeta small 0.47
4 Alpha Yota Big 0.85
5 Alpha Yota Medium 0.19
6 Alpha Yota small 0.89
7 Beta Theta Big 0.09
8 Beta Theta Medium 0.33
9 Beta Theta small 0.79
10 Beta Meta Big 0.89
11 Beta Meta Medium 0.71
12 Beta Meta small 0.59


现在,我想将其转换为这种有效的json格式,包括子节点:

   {
"name":"MyData",
"children":[
{
"name":"Alpha",
"children":[
{
"name":"Zeta",
"children":[
{
"name":"Big",
"Percentage":0.63
},
{
"name":"Medium",
"Percentage":0.43
},
{
"name":"Small",
"Percentage":0.47
}
]
},
{
"name":"Yota",
"children":[
{
"name":"Big",
"Percentage":0.85
},
{
"name":"Medium",
"Percentage":0.19
},
{
"name":"Small",
"Percentage":0.89
}
]
}
]
},
{
"name":"Zeta",
"children":[
{
"name":"Big",
"Percentage":0.63
},
{
"name":"Medium",
"Percentage":0.43
},
{
"name":"Small",
"Percentage":0.47
}
]
},
{
"name":"Yota",
"children":[
{
"name":"Big",
"Percentage":0.85
},
{
"name":"Medium",
"Percentage":0.19
},
{
"name":"Small",
"Percentage":0.89
}
]
}
]
}


如果有人可以帮助我,我将非常感谢!
谢谢

最佳答案

这是一种更干净的递归方法:

require(RJSONIO)

makeList<-function(x){
if(ncol(x)>2){
listSplit<-split(x[-1],x[1],drop=T)
lapply(names(listSplit),function(y){list(name=y,children=makeList(listSplit[[y]]))})
}else{
lapply(seq(nrow(x[1])),function(y){list(name=x[,1][y],Percentage=x[,2][y])})
}
}


jsonOut<-toJSON(list(name="MyData",children=makeList(MyData[-1])))
cat(jsonOut)

关于r - 如何使用R中的子代写入json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12818864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com