为什么Sys.time()的class()长度为2?

时间:2019-01-20 07:04:24

标签: r

我在R中遇到的所有元素的class()的长度为1。

一些例子

library(dplyr)

"string" %>% class %>% length
# [1] 1

123 %>% class %>% length
# [1] 1

0.234 %>% class %>% length
# [1] 1

Sys.Date() %>% class %>% length
# [1] 1

但是class()的{​​{1}}(本身,如上面的示例一样,长度为1)为长度2

Sys.time()

为什么?

1 个答案:

答案 0 :(得分:2)

https://stat.ethz.ch/R-manual/R-devel/library/base/html/class.html值得一读

但是从本质上讲,对象具有多个类的能力允许它们的行为在某些情况下发生变化,因为类向量的顺序决定了搜索方法的顺序。

如果您已经观察到简单对象倾向于具有奇异类。

Sys.time()返回的时间戳有点复杂,为类实现了各种方法,这些方法可能有所不同。因此,如果要在仅第二类中存在方法的上下文中尝试该对象,它将使用第二类方法。

要查看方法,请尝试以下操作:

methods(class = "POSIXt")
methods(class = "POSIXct")