【问题标题】:For loop in R with incrementsR中的for循环,增量
【发布时间】:2012-05-04 11:12:44
【问题描述】:

我正在尝试编写一个 for 循环,它将其值增加 2。等效代码是 c is

for (i=0; i<=78; i=i+2)

如何在 R 中实现同样的效果?

【问题讨论】:

  • 请发布一个更完整的示例...在 R 中,您可能实际上并不想要 for 循环。

标签: r for-loop


【解决方案1】:

您可以通过以下方式执行此操作,您可以将任何您想要迭代的长度代替长度(v1),并将位置 2 处的增量值设置为您想要的值

for(i in seq(1,length(v1),2))

【讨论】:

    【解决方案2】:

    更多信息请见?seq

    for(i in seq(from=1, to=78, by=2)){
    #  stuff, such as
      print(i)
    }
    

    for(i in seq(1, 78, 2))
    

    附言原谅我对C的无知。在那里,我刚刚暴露了自己。

    但是,这是在 R 中做你想做的事情的一种方式(请参阅更新的代码)

    编辑

    在学习了一点 C 的工作原理之后,看起来问题中发布的示例迭代了以下序列:0 2 4 6 8 ... 74 76 78

    要在 R 中完全复制它,请从 0 开始,而不是从 1 开始,如上所述。

    seq(from=0, to=78, by=2)
     [1]  0  2  4  6  8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44
    [24] 46 48 50 52 54 56 58 60 62 64 66 68 70 72 74 76 78
    

    【讨论】:

    • @Probabilityman 可能值得补充的是,在 R 中经常使用 for loop 是不必要的。如果您提供更完整的具体问题示例(或提出另一个问题),则很有可能for loop 可以完全省略。例如,print(seq(1,72,2)) 的作用与 BenBarnes 提供的代码相同。
    • ... 而@Justin 的例子要快得多。在互联网上搜索“r for loops”以获取更多信息。
    • @Justin, print(seq(1,72,2)) 确实会产生不同的输出。循环将每个元素打印为 1 元组(在自己的行上)。并不是说这是首选。如果循环可以被向量操作(或应用)替换,它可能应该是。
    • @Justin,循环内的代码有时会很复杂,循环索引只是很小的一部分,在这种情况下,向量化就不行了。
    • @RomanLuštrik 好点。我只是想经常指出,给出一个更完整的示例,所提供的解决方案将更像“R”,并且通常可以完全松开循环。但是,确实有时无法避免它们!
    猜你喜欢
    • 1970-01-01
    • 2017-01-26
    • 2018-12-22
    • 2017-03-22
    • 2019-06-25
    • 1970-01-01
    • 1970-01-01
    • 2011-07-15
    • 2019-07-15
    相关资源
    最近更新 更多