2013-02-09 17 views

回答

1

你並不需要一個for循環,使用match函數來代替,如:

which(1:200 %% 3 == 0) 
[1] 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75 78 81 
[28] 84 87 90 93 96 99 102 105 108 111 114 117 120 123 126 129 132 135 138 141 144 147 150 153 156 159 162 
[55] 165 168 171 174 177 180 183 186 189 192 195 198 
+0

謝謝,這更好! – 2013-02-09 02:09:08

+0

你可以接受它作爲正確的答案,並upvote它;) – 2013-02-09 02:09:58

+0

這是雙重浪費。它產生1:200,然後是mod-3,然後將其與0進行比較,創建一個TRUE和FALSE向量。然後'which'必須創建與所有TRUE相對應的索引的另一個向量。這種毫無意義的電子浪費...... – Spacedman 2013-02-09 08:47:14

1

其他兩個備選方案:

c(1:200)[c(F, F, T)] 
c(1:200)[1:200 %% 3 == 0] 
3

到目前爲止發佈其他每個方法都產生了1:200向量然後Ť它的三分之二甩掉了。真是浪費。爲了保護環境,此方法不會浪費任何電子:

seq(3,200,by=3) 
+2

+1 - 但是當你使用整數時,你仍然在使用數字來浪費電子。 – flodel 2013-02-10 01:56:25