【问题标题】:Why is the class() of Sys.time() length 2?为什么 Sys.time() 的 class() 长度为 2?
【发布时间】:2019-01-20 07:04:23
【问题描述】:

我在 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

Sys.time()class()(它本身,如上面的示例,长度为1)的长度为2

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

为什么?

【问题讨论】:

标签: r


【解决方案1】:

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

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

如果您观察到简单的对象往往有一个单一的类。

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

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

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

【讨论】:

  • 当一个对象有多个类时,它们的返回顺序是否有规则?我目前正在做的快速解决方法可能是简单地获取第一个结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 2014-03-28
  • 2014-06-30
  • 2023-03-12
相关资源
最近更新 更多