2013-03-24 177 views
23

我有一个关于创建向量的问题。如果我是a <- 1:10,则“a”的值为1,2,3,4,5,6,7,8,9,10。如何在R中创建具有特定间隔的向量?

我的问题是你如何创建一个具有特定间隔的元素之间的向量。例如,我想创建一个具有从1到100的值的矢量,但仅以5的间隔计数,以便我得到一个具有值5,10,15,20,...,95,100的子向量

我认为在Matlab中我们可以做1:5:100,我们如何使用R来做到这一点?

我可以试试5*(1:20),但有没有更简单的方法? (因为在这种情况下,我需要知道整个长度(100),然后除以间隔(5)的大小以获得20)

+5

我知道有时很难提出好的搜索条件,但如果我谷歌“r序列”,第二个命中是“seq”的帮助页面。该函数可能也是R的最基本介绍的一部分。 – Roland 2013-03-24 17:32:55

+3

是的,我尝试了几件事,并找不到它..没有发生在我写“序列”..不断思考间隔 – Luli 2013-03-24 17:58:19

回答

46

在R中,等价函数是seq,您可以将其与选项by

seq(from = 5, to = 100, by = 5) 
# [1] 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 

除了by你还可以有其他的选择,如length.outalong.with

length.out:如果你想在0和1之间的共10个号码,例如:

seq(0, 1, length.out = 10) 
# gives 10 equally spaced numbers from 0 to 1 

along.with:这需要你提供向量的长度作为输入并提供1:长度(输入)的矢量。

seq(along.with=c(10,20,30)) 
# [1] 1 2 3 

虽然,而是采用了along.with选项,建议在这种情况下使用seq_along。从文件?seq

seq是通用的,只有默认的方法在这里描述。请注意,它会派发第一个参数的类,而不论参数名称如何。如果只有一个参数被调用,这可能会带来意想不到的后果,因为这意味着将其视为一致:在这种情况下使用seq_along要好得多。

seq_along

而不是seq(along.with(.))

seq_along(c(10,20,30)) 
# [1] 1 2 3 

希望这有助于。

相关问题