创建以0开头的序列

时间:2012-12-29 13:31:43

标签: r seq

我喜欢在R中使用seq()命令来创建从零开始的序列。但是当我输入例如。

seq(0:14)

我得到以下输出:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

我做错了什么?

4 个答案:

答案 0 :(得分:34)

正如其他人所说,你想要0:14seq(from=0,to=14)你得到不良后果的原因也值得注意。

在这种情况下,冒号运算符本身(如?':'中所述)生成所需的常规整数序列,然后将其提供给seq()

seq()猜测你的意思是seq(along.with = 0:14),它会返回与你提供的东西长度相同的序列。当然,它使用默认的from = 1。所以它给你一个从一开始的十五个整数的序列。它大致类似于:

(x <- 0:14)
# [1]  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14

seq(along.with = x, from = 1)
# [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15

尽管导致了错误,但这个along.with功能对于制作与某些vector / list / matrix长度相同的序列非常有用:

seq(c(1,"w",5,6,NA))
# [1] 1 2 3 4 5

我们不能说?seq没有警告我们命名我们的论点:

  

seq和seq.int的未命名参数的解释不是   标准,建议始终在何时命名参数   编程。

答案 1 :(得分:13)

你的意思是

0:14

seq(0, 14)

答案 2 :(得分:3)

seq(0, 14)为我提供了以下输入:

[1]  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14

答案 3 :(得分:3)

这里的问题是语法问题。 i:j创建一个从数字i到j的序列;例如1:5可以读作1到5或1,2,3,4,5。

另一方面,函数seq采用'to'参数和'from'参数,两者都必须是单个数字。输入seq(0:14)意味着向量 - 而不是单个数字 - 被传递给seq的参数之一。

你想要的是

seq(from=0, to=14) 

希望有所帮助