У меня есть следующий вектор двойных значений x
, где каждый элемент представляет собой дату POSIX
x <- c(1417621083, 1417621204, 1417621384, 1417621564, 1417621623)
Я использую пакет RJSONIO и хотел бы продолжать это делать.
Как упражнение, я хотел бы преобразовать эти значения в текст JSON, а затем снова прочитать их снова в R, но у меня возникли проблемы с получением представлений даты и времени в хороший упрощенный результат списка. В JSON даты должны быть в специальном формате, поэтому значения в x
преобразуются в следующее:
dates <- c("/new Date(1417621083)", "/Date(1417621204)", "/Date(1417621384)",
"/Date(1417621564)", "/Date(1417621623)")
Когда я запускаю dates
со вторым произвольным вектором через парсер RJSONIO, все кажется плавным.
library(RJSONIO)
make <- toJSON(list(date = dates, value = LETTERS))
Затем, когда я анализирую новый текст JSON, используя параметр stringFun
с помощью процедуры R-json C для дат, результатом является список из двух элементов, первый элемент - список, а второй - атомный вектор.
(read <- fromJSON(make, stringFun = "R_json_dateStringOp"))
# $date
# $date[[1]]
# [1] "2014-12-03 07:38:03 PST"
#
# $date[[2]]
# [1] "2014-12-03 07:40:04 PST"
#
# $date[[3]]
# [1] "2014-12-03 07:43:04 PST"
#
# $date[[4]]
# [1] "2014-12-03 07:46:04 PST"
#
# $date[[5]]
# [1] "2014-12-03 07:47:03 PST"
#
#
# $value
# [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M"
# [14] "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
Но я ожидал список из двух векторов, и я предпочел бы его в виде
# $date
# [1] "2014-12-03 07:38:03 PST" "2014-12-03 07:40:04 PST"
# [3] "2014-12-03 07:43:04 PST" "2014-12-03 07:46:04 PST"
# [5] "2014-12-03 07:47:03 PST"
#
# $value
# [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q"
# [18] "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
Я попробовал несколько способов упростить результат из вызова fromJSON()
, и ни одна из них не сработала. Вот несколько моих попыток:
Использование обработчика: Это упрощает результат, но не позволяет переформатировать даты
h1 <- basicJSONHandler(simplify = TRUE)
fromJSON(make, handler = h1, stringFun = "R_json_dateStringOp")
# $date
# [1] "/new Date(1417621083)" "/Date(1417621204)"
# [3] "/Date(1417621384)" "/Date(1417621564)"
# [5] "/Date(1417621623)"
#
# $value
# [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M"
# [14] "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
Попытка аргумента simplify
: Я пробовал несколько разных вариантов этого, и никто не работал.
fromJSON(make, simplify = StrictCharacter)
# $date
# [1] "/new Date(1417621083)" "/Date(1417621204)"
# [3] "/Date(1417621384)" "/Date(1417621564)"
# [5] "/Date(1417621623)"
#
# $value
# [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M"
# [14] "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z"
Есть ли способ упростить результат для дат в вызове fromJSON()
?