使用向量的对象转换
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
,但是在这里,我看到了完全不同的故事。那么,为什么x
和y
的类不是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").
此处,2
和 5
是整数,因此序列也将被 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"
我运行给出的代码:
> 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
,但是在这里,我看到了完全不同的故事。那么,为什么x
和y
的类不是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").
此处,2
和 5
是整数,因此序列也将被 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"