一系列数字的类

sta*_*010 7 r

我可以用以下三种方式之一创建一系列数字:

> 1:4
[1] 1 2 3 4

> seq(1,4)
[1] 1 2 3 4

> c(1,2,3,4)
[1] 1 2 3 4
Run Code Online (Sandbox Code Playgroud)

但为什么要c()回归另一个班级呢?

> class(1:4)       
[1] "integer"

> class(seq(1,4))
[1] "integer"

> class(c(1,2,3,4))
[1] "numeric"
Run Code Online (Sandbox Code Playgroud)

编辑:添加seq()到讨论中.

GSe*_*See 13

Value部分help(":")告诉冒号运算符返回什么.它说:

如果from是整数值,则将为整数类型,并且结果可在R整数类型中表示.

因此,如果from可以表示为整数,则将整个向量强制转换为整数

> class(1.0:3.1)
[1] "integer"
> 1.0:3.1
[1] 1 2 3
Run Code Online (Sandbox Code Playgroud)

一般在R中,1是numeric.如果你想要一个integer,你必须追加一个L

> class(1)
[1] "numeric"
> class(1L)
[1] "integer"
Run Code Online (Sandbox Code Playgroud)

此外,c将所有参数"强制转换为返回值的类型的常见类型"(from ?c).什么类型"是从层次结构中最高类型的组件确定的NULL <raw <logical <integer <double <complex <character <list <expression."

因此,如果任何参数c更通用integer,则整个向量将被强制转换为更通用的类.

> class(c(1L, 2L, 3L, 4L))
[1] "integer"
> class(c(1L, 2, 3L, 4L)) # 2 is numeric, so the whole vector is coerced to numeric
[1] "numeric"
> class(c(1L, 2, "3L", 4L)) # "3L" is character, so the whole vector is coerced to character
[1] "character"
Run Code Online (Sandbox Code Playgroud)

回复:这个seq案子,

seq(1, 4)与... 1:4中所述相同?seq

seq(from,to)"生成序列,从+/- 1,...,到(与from:to相同)"