R:向量中的 Int 与 Num 异常
R : Int vs Num Anomaly in Vector
我正在学习 R 编程入门,发现一个轻微的异常:
x <- c(2,1,1,5)
生成类型为 num
的向量
y <- c(1:5)
生成类型为 int
的向量
z <- c(1.5,2.3)
生成类型为 num
的向量
为什么会这样? R
中的基本数据类型是什么:是 int
还是 num
?如果向量中的元素之一是 float
会发生什么,向量的类型会变成 float
还是其他?当向量中的所有元素都是 float
时会发生什么 - 为什么在那种情况下它仍然是 num
?
有两个明显的问题在起作用:
在 c(2, 1, 1, 5)
中,您 明确地 创建 numeric
类型。对于 integer
,您必须使用 c(2L, 1L, 1L, 5L)
,因为只有后缀 L
才能确保创建 integer
类型(或通过 as.integer()
等进行转换)。但是请继续阅读...
在 c(1:5)
中,:
的历史覆盖开始发挥作用。因为用法几乎总是涉及整数序列,所以这就是您得到的:整数。
两种形式都有记录,因此这不是您问题标题所暗示的异常。
我正在学习 R 编程入门,发现一个轻微的异常:
x <- c(2,1,1,5)
生成类型为num
的向量
y <- c(1:5)
生成类型为int
的向量
z <- c(1.5,2.3)
生成类型为num
的向量
为什么会这样? R
中的基本数据类型是什么:是 int
还是 num
?如果向量中的元素之一是 float
会发生什么,向量的类型会变成 float
还是其他?当向量中的所有元素都是 float
时会发生什么 - 为什么在那种情况下它仍然是 num
?
有两个明显的问题在起作用:
在
c(2, 1, 1, 5)
中,您 明确地 创建numeric
类型。对于integer
,您必须使用c(2L, 1L, 1L, 5L)
,因为只有后缀L
才能确保创建integer
类型(或通过as.integer()
等进行转换)。但是请继续阅读...在
c(1:5)
中,:
的历史覆盖开始发挥作用。因为用法几乎总是涉及整数序列,所以这就是您得到的:整数。
两种形式都有记录,因此这不是您问题标题所暗示的异常。