【发布时间】:2013-02-09 02:00:07
【问题描述】:
正如标题所说,我需要一个 for 循环,它将写入从 1 到 200 的每个数字,并除以 3。
【问题讨论】:
正如标题所说,我需要一个 for 循环,它将写入从 1 到 200 的每个数字,并除以 3。
【问题讨论】:
到目前为止发布的所有其他方法都会生成 1:200 向量,然后丢弃其中的三分之二。多么浪费。为了具有生态意识,这种方法不会浪费任何电子:
seq(3,200,by=3)
【讨论】:
您不需要 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
【讨论】:
which 必须创建另一个与所有 TRUE 对应的索引向量。如此无意义的电子浪费……
seq(见我的回答)生成一个向量的速度是原来的四倍。我想我解释了原因,所以你可以学习(表示尊重),我发布了一个更好的答案。
另外两种选择:
c(1:200)[c(F, F, T)]
c(1:200)[1:200 %% 3 == 0]
【讨论】: