【问题标题】:Create a for loop which prints every number that is x%%3=0 between 1-200创建一个 for 循环,打印 1-200 之间 x%%3=0 的每个数字
【发布时间】:2013-02-09 02:00:07
【问题描述】:

正如标题所说,我需要一个 for 循环,它将写入从 1 到 200 的每个数字,并除以 3。

【问题讨论】:

    标签: r loops for-loop


    【解决方案1】:

    到目前为止发布的所有其他方法都会生成 1:200 向量,然后丢弃其中的三分之二。多么浪费。为了具有生态意识,这种方法不会浪费任何电子:

    seq(3,200,by=3)
    

    【讨论】:

    • +1 - 但是当您可以使用整数时,您仍然在使用数字浪费电子。
    【解决方案2】:

    您不需要 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
    

    【讨论】:

    • 谢谢,这样更好!
    • 这是双重浪费。它生成 1:200,然后是 mod-3,然后将其与 0 进行比较,创建一个 TRUE 和 FALSE 向量。然后which 必须创建另一个与所有 TRUE 对应的索引向量。如此无意义的电子浪费……
    • @Spacedman 如果您认为自己是“电子保护者”,那么只需发布另一个答案,不要做出如此糟糕的 cmets。我认为这是一个尊重问题。
    • 我认为这是一个重要的评论——R 中的技能来自于考虑 R 如何使用它的向量,这不是一种有效的方法。刚刚做了一些基准测试并用seq(见我的回答)生成一个向量的速度是原来的四倍。我想我解释了原因,所以你可以学习(表示尊重),我发布了一个更好的答案。
    【解决方案3】:

    另外两种选择:

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

    【讨论】:

      猜你喜欢
      • 2021-03-06
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 2019-06-16
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多