我试图将R data.frame转换为json文件,以便在js代码中通过jquery进一步调用此json文件。
我有以下data.frame:
# Input data.frame
data <- data.frame(Product=c("Prod1","Prod2","Prod3","Prod4"), Val1=c(4,5,2,6.8), Val2=c(6,5,2,7.8), Val3=c(8,5,6,6.7),
Description=c("Doritos 1.0 Intel PAV UMA","Stag 1.2 Intel PAV UMA","Pike 1.0 Intel Spectre x360",
"Antinori 1.2 Intel PAV UMA"))
我需要将其转换为json文件,就像这样:
# Desired Output
[
["Product","Val1","Val2","Val3", "Description"],
["Prod1",4,6,8,"Doritos 1.0 Intel PAV UMA"],
["Prod2",5,5,5,"Stag 1.2 Intel PAV UMA"],
["Prod3",2,2,6,"Pike 1.0 Intel Spectre x360"],
["Prod4",6.8,7.8,6.7,"Antinori 1.2 Intel PAV UMA"]
]
我尝试使用 jsonlite 包的 toJSON ,但输出不是我需要的输出。
你能帮助我吗,我怎样才能将原始data.frame转换成上面所需的输出。非常感谢前进。
答案 0 :(得分:0)
您可以使用unname
获取json输出中的方括号:
library(jsonlite)
data <- rbind(names(data), sapply(data, as.character))
toJSON(unname(data), pretty = T)
# [
# ["Product", "Val1", "Val2", "Val3", "Description"],
# ["Prod1", "4", "6", "8", "Doritos 1.0 Intel PAV UMA"],
# ["Prod2", "5", "5", "5", "Stag 1.2 Intel PAV UMA"],
# ["Prod3", "2", "2", "6", "Pike 1.0 Intel Spectre x360"],
# ["Prod4", "6.8", "7.8", "6.7", "Antinori 1.2 Intel PAV UMA"]
# ]
替代:
df.toJSON <- function(data) {
out <- capture.output(write.csv(data, row.names = FALSE, eol = "],\n"))
out <- paste(paste0(" [", out, collapse = "\n"))
out <- substr(out, 0, nchar(out)-1)
out <- paste0("\n[\n", out, "\n]")
return(out)
}
cat(df.toJSON(data))
# [
# ["Product","Val1","Val2","Val3","Description"],
# ["Prod1",4,6,8,"Doritos 1.0 Intel PAV UMA"],
# ["Prod2",5,5,5,"Stag 1.2 Intel PAV UMA"],
# ["Prod3",2,2,6,"Pike 1.0 Intel Spectre x360"],
# ["Prod4",6.8,7.8,6.7,"Antinori 1.2 Intel PAV UMA"]
# ]