Экспорт фрейма данных JSON в форматирование R - PullRequest
2 голосов
/ 11 марта 2019

У меня возникли проблемы с форматированием данных моего фрейма данных R или таблицы в нужный файл JSON.

Это формат, который я хотел бы иметь.

{ "PercentileFromR":
  [ "499 to 516", "517 to 534", "535 to 552", "553 to 569", "570 to 586", "587 to 604", "605 to 622"],
  [ "0", "7", "38", "124", "271", "388", "442"],
  [ "4", "6", "35", "68", "81", "71", "33"]
]
}

Мой код

col1 <- c("499 to 516","517 to 534","535 to 552","553 to 569","570 to 586","587 to 604","605 to 622")
col2 <- c("0","7","38","124","271","388","442")
col3 <- c("4","6","35","68","81","71","33")
tableData <- rbind(col1, col2, col3)

install.packages('jsonlite', dependencies=TRUE, repos='http://cran.rstudio.com/')
library(jsonlite)
exportJSON <- toJSON(tableData, pretty = TRUE)
write(exportJSON, "output.json")

Но это то, что я получаю

[
  ["499 to 516", "517 to 534", "535 to 552", "553 to 569", "570 to 586", "587 to 604", "605 to 622"],
  ["0", "7", "38", "124", "271", "388", "442"],
  ["4", "6", "35", "68", "81", "71", "33"]
]

Мне удалось получить это, но я все еще не в нужном мне формате:

{"binCategories":"499 to 516","plot1binCount":"0","plot2binCount":"4","NA":"517 to 534","NA":"7","NA":"6","NA":"535 to 552","NA":"38","NA":"35","NA":"553 to 569","NA":"124","NA":"68","NA":"570 to 586","NA":"271","NA":"81","NA":"587 to 604","NA":"388","NA":"71","NA":"605 to 622","NA":"442","NA":"33"}

Ответы [ 2 ]

1 голос
/ 11 марта 2019

Преобразование кадра данных в именованный список перед преобразованием в JSON:

library(jsonlite)
tableData <- rbind(col1, col2, col3)

#make a list and then name the elements.
tableData<-list(tableData)
names(tableData)<-"PercentileFromR"

exportJSON <- toJSON(tableData, pretty = TRUE)
exportJSON

# {
#    "PercentileFromR": [
#       ["499 to 516", "517 to 534", "535 to 552", "553 to 569", "570 to 586", "587 to 604", "605 to 622"],
#       ["0", "7", "38", "124", "271", "388", "442"],
#       ["4", "6", "35", "68", "81", "71", "33"]
#       ]
# } 
0 голосов
/ 11 марта 2019

Вы можете манипулировать объектом exportJSON, используя gsub с некоторыми выражениями:

exportJSON <- gsub("\\[\n", "\\{ \"PercentileFromR\":\n", exportJSON)
exportJSON <- gsub("\n\\]", "\n\\]\n\\}", exportJSON)
exportJSON

Вывод:

{ "PercentileFromR":
  ["499 to 516", "517 to 534", "535 to 552", "553 to 569", "570 to 586", "587 to 604", "605 to 622"],
  ["0", "7", "38", "124", "271", "388", "442"],
  ["4", "6", "35", "68", "81", "71", "33"]
]
} 
...