gpt4 book ai didi

r - 用c()函数强制日期的规则是什么

转载 作者:行者123 更新时间:2023-12-04 15:17:09 27 4
gpt4 key购买 nike

据我了解,当与 c(...) 函数连接的对象属于不同类型时,它们会被强制转换为单一类型,即输出对象的类型

根据 R 文档

The output type is determined from the highest type of the components in the hierarchy NULL < raw < logical < integer < double < complex < character < list < expression.



日期的数据类型为 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调用 c 时运行的函数与 Date对象作为第一个参数。你可以看到所有的“特别”c()函数与 methods("c") .这些函数可以(并且确实)定义与基础 c() 不同的规则功能。但是由于重载仅基于第一个参数的数据类型发生,因此值出现的顺序有很大的不同。

关于r - 用c()函数强制日期的规则是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58325934/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com