基本上,我正在尝试保留一个名为dates
的向量,其中包含在我的分析中经常出现的特殊Date
s,比如2016年新年和2015年7月4日。我希望能够通过名称而不是健壮性索引来提取,例如,dates["nyd"]
获取新年,dates["ind"]
获取7月4日。
我认为这会很简单:
dates <- as.Date(c(ind = "2015-07-04", nyd = "2016-01-01"))
但as.Date
已经去掉了这些名字:
dates
# [1] "2015-07-04" "2016-01-01"
这并不是说不能给Date
矢量命名(这会很奇怪,因为它们基本上是专门解释的integer
):
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"
这是有原因的吗?在?as
或我见过的任何其他帮助页面中都没有提到名称的丢失。
更广泛地说,有没有一种方法(使用as*
之外的其他方法)来确保对象的名称在转换过程中不会丢失?
当然,一种方法是编写像as.Date.named
这样的自定义函数,或者创建一个带有相关方法的自定义类as.named
,但如果没有这样的东西,我会感到惊讶,因为这似乎应该是一个非常常见的操作。
如果重要的话,我在3.2.2。
https://stackoverflow.com/questions/34647674
复制相似问题