1

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

seq(0:14)

我得到以下输出:

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

我究竟做错了什么?

4

4 回答 4

36

正如其他人所说,你想要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功能对于制作与某些向量/列表/矩阵长度相同的序列显然很有用:

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

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

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

于 2012-12-29T15:33:39.687 回答
13

你的意思是做

0:14

或者

seq(0, 14)
于 2012-12-29T13:33:23.727 回答
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) 

希望有帮助

于 2012-12-29T15:35:31.913 回答
3

seq(0, 14)为我得到以下输入:

[1]  0  1  2  3  4  5  6  7  8  9 10 11 12 13 14
于 2012-12-29T13:37:48.063 回答