为什么seq()同时创建int和num向量,而c()从不创建int向量?

时间:2018-10-10 11:44:21

标签: r

我无法弄清楚为什么seq()可以根据元素中是否存在小数点来输出不同的类,而c()总是创建一个num向量,无论是否存在小数。 / p>

例如:

seqDec <- seq(1, 2, 0.5) # num vector
cDec <- c(1, 1.5, 2) # num vector
seqInt <- seq(1, 5) # int vector
cInt <- c(1, 2, 3, 4, 5) # num vector

1 个答案:

答案 0 :(得分:5)

c通过串联您提供的元素来创建向量。与此相反,seq实际上是根据特定参数通过生成新数字来构造一个序列。

因此,对于c(1, 2, 4, 5),由于参数为numeric,结果也是如此(class(1)numeric,而不是integer!)。您可以通过提供 integers

来生成integer向量
intvec = c(1L, 2L, 3L, 4L, 5L)

令人讨厌。但可能。

对于seq,如果不提供步长(by参数),则该函数默认生成整数值;在这方面,它等效于:运算符:

intvec = 1 : 5

实际上,如果您不提供bylength.out参数,那么seq(from, to)将在内部执行from : to