Изменения формата даты - PullRequest
       1

Изменения формата даты

0 голосов
/ 08 февраля 2019

Я просто готовлю некоторую таблицу, например cols<- c("Metrics",as.Date(Sys.Date()-8,origin="1899-12-30"),as.Date(Sys.Date()-1,origin="1899-12-30")), и не получаю ожидаемого результата.Любой, пожалуйста, помогите.
Вывод: "Метрики" "17927" "17934"

cols<- c("Metrics",as.Date(Sys.Date()-8,origin="1899-12-30"),as.Date(Sys.Date()-1,origin="1899-12-30"))

cols<- c("Metrics",as.Date(Sys.Date()-8,origin="1899-12- 
30"),as.Date(Sys.Date()-1,origin="1899-12-30"))

Ожидаемый вывод:

"Metrics" "2019-01-31"   "2019-02-07" 

1 Ответ

0 голосов
/ 08 февраля 2019

1) символьный вывод Если вы ищете символьный вектор в качестве результата, преобразуйте компоненты класса Date в character.Также обратите внимание, что показанный в вопросе as.Date не нужен, поскольку Sys.Date() и смещения от него уже относятся к классу Date.Кроме того, обратите внимание, что если Sys.Date() были вызваны дважды прямо в полночь, возможно, что два вызова произошли бы в разные дни.Чтобы избежать этой возможности, мы создаем переменную today, чтобы ее вызывали только один раз.

today <- Sys.Date()
cols <- c("Metrics", as.character(today-8), as.character(today-1))
cols
## [1] "Metrics"    "2019-01-31" "2019-02-07"

1a) Это можно сделать еще короче, как это.

cols <- c("Metrics", as.character(Sys.Date() - c(8, 1)))
cols
## [1] "Metrics"    "2019-01-31" "2019-02-07"

2) вывод списка В качестве альтернативы, если вам нужен список с одним character компонентом и двумя Date компонентами, то:

today <- Sys.Date()
L <- list("Metrics", today - 8, today - 1)
L

, давая:

[[1]]
[1] "Metrics"

[[2]]
[1] "2019-01-31"

[[3]]
[1] "2019-02-07"

Если у нас уже было L и мы хотели символьный вектор, мы могли бы преобразовать его следующим образом:

sapply(L, as.character)
## [1] "Metrics"    "2019-01-31" "2019-02-07"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...