据我了解,当与c(...)函数连接的对象属于不同类型时,它们被强制转换为单一类型,即输出对象的类型
根据R文档
根据层次结构中组件的最高类型来确定输出类型NULL <原始<逻辑<整数<双<复数<字符<列表<表达式。
日期的数据类型为double,因此如果与字符配对将导致一个字符,如果与整数配对将导致一个double,正如我们在此处看到的
> a<-as.Date("2019-01-01")
> c("a",a)
[1] "a"     "17901"
> c(1L,a)
[1]     1 17901
> typeof(c(1L,a))
[1] "double"
但是,如果日期是第一个,则该函数将尝试将其他值转换为Date类。这似乎与文档中的行为不匹配
> c(a,1)
[1] "2019-01-05" "1970-01-02"
> c(a,"a")
[1] "2019-01-05" NA
Warning message: In as.POSIXlt.Date(x) : NAs introduced by coercion
此处还适用哪些其他规则?或者,我对此情况有误解?
根据第一个参数的数据类型,可以在 R 中“重载”函数。您可以看到,当您使用对象作为第一个参数c.Date进行调用时,会运行一个特殊的函数。您可以使用 来查看所有“特殊”功能。这些函数可以(并且确实)定义与基本函数不同的规则。但由于重载仅根据第一个参数的数据类型发生,因此值出现的顺序会产生很大的差异。cDatec()methods("c")c()
| 归档时间: | 
 | 
| 查看次数: | 49 次 | 
| 最近记录: |