执行因子分析后,加载对象如下所示:
Loadings:
Factor1 Factor2
IV1 0.844 -0.512
IV2 0.997
IV3 -0.235
IV4 -0.144
IV5 0.997
Factor1 Factor2
SS loadings 1.719 1.333
Proportion Var 0.344 0.267
Cumulative Var 0.344 0.610
我可以使用 print(fit$loadings[,1:2])
来定位因素本身得到以下内容。
Factor1 Factor2
IV1 0.84352949 -0.512090197
IV2 0.01805673 0.997351400
IV3 0.05877499 -0.234710743
IV4 0.09088599 -0.144251843
IV5 0.99746785 0.008877643
我想创建一个类似于以下内容的 json 字符串。
"loadings": {
"Factor1": {
"IV1": 0.84352949, "IV2":0.01805673, "IV3":0.05877499, "IV4": 0.09088599, "IV5": 0.99746785
},
"Factor2": {
"IV1": -0.512090197, "IV2": 0.997351400, "IV3": -0.234710743, "IV4": -0.144251843, "IV5": 0.008877643
}
}
我已经尝试使用 unclass() 访问各个属性,希望我可以循环并将它们放入字符串中,但没有任何运气(使用 loads <- loadings(fit)
和 <- names(unclass(loads))
名称显示为“null” )
最佳答案
只是附议@GSee 的评论 (+1) 和@dickoa 的回答 (+1),并附上一个更接近的例子:
为可重现的示例创建一些演示数据(您还应该在所有问题中提供一个):
> fit <- princomp(~ ., data = USArrests, scale = FALSE)
加载
RJSONIO
/rjson
包:> library(RJSONIO)
转换您的数据以满足您的需求:
> res <- list(loadings = apply(fit$loadings, 2, list))
返回 JSON:
> cat(toJSON(res)) { "loadings": { "Comp.1": [ { "Murder": -0.041704, "Assault": -0.99522, "UrbanPop": -0.046336, "Rape": -0.075156 } ], "Comp.2": [ { "Murder": 0.044822, "Assault": 0.05876, "UrbanPop": -0.97686, "Rape": -0.20072 } ], "Comp.3": [ { "Murder": 0.079891, "Assault": -0.06757, "UrbanPop": -0.20055, "Rape": 0.97408 } ], "Comp.4": [ { "Murder": 0.99492, "Assault": -0.038938, "UrbanPop": 0.058169, "Rape": -0.072325 } ] } }>
关于json - 从 R 中的加载对象创建 json 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15580954/