R:Int与向量中的Num异常

时间:2015-04-26 14:55:57

标签: r floating-point int

我正在研究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

1 个答案:

答案 0 :(得分:5)

有两个截然不同的问题:

  1. c(2, 1, 1, 5)中,您明确创建numeric类型。对于integer,您必须使用c(2L, 1L, 1L, 5L),因为只有后缀L可确保创建integer类型(或通过as.integer()等投射)。但请继续阅读......

  2. c(1:5):的历史覆盖发挥作用。因为用法几乎总是涉及整数序列,所以你得到的是:整数。

  3. 这两种形式都有记录,所以它不像你的问题标题所暗示的那样异常。