> dates <- as.Date(c("2013-01-01", "2013-01-02"))
> class(dates)
[1] "Date"
> for(d in dates) print(class(d))
[1] "numeric"
[1] "numeric"
我有两个问题:
- 在迭代日期对象列表时,哪种方法是首选?
- 我不理解约书亚(上面链接的接受答案者)的答案,这里引用一下:“因为
Date
对象不是严格的向量,所以你的Date
向量被强制转换为numeric
”。那么如何确定应该将Date
强制转换为numeric
?
is.vector(dates) # FALSE
,所以日期不是“向量”。你的第二个问题应该是对我之前答案的评论。 - Joshua Ulrichfor
循环将其强制转换为向量。 - Joshua Ulrich?vector
中可以得知:"对于任何模式,如果x除了names之外还有其他属性,[is.vector
]将返回FALSE。" 在R语言中,“向量”并不意味着可以通过位置访问,而是指它没有属性。它明确指出因子不是向量,并且可能还应该指出日期和POSIXt类对象也不是。 - IRTFMis.vector
函数很令人困惑 - 它只告诉你是否有一个没有属性的原子向量。is.atomic(as.Date("2012-01-01"))
是 TRUE,所以日期是原子向量。 - hadley