内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
我以为这很简单:
dates <- as.Date(c(ind = "2015-07-04", nyd = "2016-01-01"))
但as.Date
剥去了这些名字:
dates # [1] "2015-07-04" "2016-01-01"
不是说Date
向量不能命名:
setNames(dates, c("ind", "nyd")) # ind nyd # "2015-07-04" "2016-01-01"
不幸的是,没有办法声明Date
向量,特别是不知道日期的基本整数值。
探索这一点,似乎这是as*
函数类:
as.integer(c(a = "123", b = "436")) # [1] 123 436 as(c(a = 1, b = 2), "character") # [1] "1" "2"
有什么原因吗?
mode
功能。
vec <- c(a = "1", b = "2") mode(vec) <- "integer" vec # returns: # a b # 1 2
不过,我不知道你怎么把这个应用到date上:
vec <- c(a = "2010-01-01") mode(vec) <- "POSIXlt"
提供了一些东西,但似乎不太正确。
你也可以用
sapply(vec, as.whatever)
这会保留名字。但是,我认为这会慢一些,因为你失去了矢量化函数的优势。
第三,有:
structure(as.whatever(vec), names = names(vec))