我喜欢在R中使用seq()
命令来创建从零开始的序列。但是当我输入例如。
seq(0:14)
我得到以下输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
我做错了什么?
答案 0 :(得分:34)
正如其他人所说,你想要0:14
或seq(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)
希望有所帮助