2013-03-24 176 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 

希望這有助於。

相關問題