使用向量的对象转换

Object conversion with vectors

我运行给出的代码:

> mean(as.numeric(x <- 1:4))
[1] 2.5
> class(x)
[1] "integer"
> 
> x <- 2:5
> class(x)
[1] "integer"
> as.numeric(x)
[1] 2 3 4 5
> class(x)
[1] "integer"
> 

查询 - 据我研究,一个对象的行为类似于 integer 它最终必须被分配 L,但是在这里,我看到了完全不同的故事。那么,为什么xy的类不是numeric呢?

但是,如果没有向量,一切照常进行:

> a <-3
> class(a)
[1] "numeric"
> b <- 3L
> class(b)
[1] "integer"

如果我们检查?":",它已经被描述

For numeric arguments, a numeric vector. This will be of type integer if from is integer-valued and the result is representable in the R integer type, otherwise of type "double" (aka mode "numeric").

此处,25 是整数,因此序列也将被 integer 调用。当然,类型提升存在于动态语言中,而不是静态语言

此外,检查

的输出
class(seq(2, 5))
#[1] "integer"
class(seq(2.0, 5.0))
#[1] "integer"
class(seq(2.0, 5.0, by = 1.0))
#[1] "numeric"
class(seq(2, 5, by = 1.0))
#[1] "numeric"
class(seq(2, 5, by = 1))
#[1] "numeric"
class(seq(2, 5, by = 1L))
#[1] "numeric"