我正在研究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
?
答案 0 :(得分:5)
有两个截然不同的问题:
在c(2, 1, 1, 5)
中,您明确创建numeric
类型。对于integer
,您必须使用c(2L, 1L, 1L, 5L)
,因为只有后缀L
可确保创建integer
类型(或通过as.integer()
等投射)。但请继续阅读......
在c(1:5)
中:
的历史覆盖发挥作用。因为用法几乎总是涉及整数序列,所以你得到的是:整数。
这两种形式都有记录,所以它不像你的问题标题所暗示的那样异常。