2012-10-12 330 views
6

讓我有這樣for()循環步驟寬度

a <- seq(1, 100, 1) 

陣列,並且我想選擇剛剛發生的每3個步驟與for()環路從第二個,例如啓動元件2,5,8,11等。

在這種情況下,我應該如何使用for()

b <- NULL 
# for(i in 1:length(a)) { # Is there any additional argument? 
    # b[i] <- a[...] # Or I can just multiply 'i' by some integer? 
# } 

感謝,

+0

您should't使用一個for循環這個 – Dason

回答

11

使用3seq

for (i in seq(2, length(a), by=3)) {} 

> seq(2, 11, 3) 
[1] 2 5 8 11 
+0

我是有點不同的語言混淆,我試圖像'的(我在1:長度(a); I + 3){} '和諸如此類的東西:) –

+0

如果你這樣想,那麼即使你想出瞭如何在R中做到這一點,你也會得到非常低效的R代碼。考慮在你的問題中發佈更大的一部分另一個問題,特別是如果代碼似乎運行緩慢。 – John

3

by價值爲什麼使用for

b <- a[seq(2,length(a),3)] 
+0

我的錯,在我想解決的原始問題中,除了使用'for()'之外別無選擇;在這個例子中,我沒有重現我的原始問題,但我指定了我想使用'for()'。 –

+1

如果您確實需要使用for(),那麼您仍然需要儘可能減少循環中的代碼量。 for()示例中的序列選擇實際上是在循環外部。爲了優化你的R代碼,你應該儘可能地考慮這個問題。 – John