R中的for循环,增量

Posted

技术标签:

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

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

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

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

【问题讨论】:

请发布一个更完整的示例...在 R 中,您可能实际上并不想要 for 循环。 【参考方案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”,并且通常可以完全松开循环。但是,确实有时无法避免它们!

以上是关于R中的for循环,增量的主要内容,如果未能解决你的问题,请参考以下文章

for循环的初始化和增量部分中的逗号如何工作?

损坏:带有增量计数器的 For 循环中的 Elif

for循环不迭代所有增量

如何在 C++ 'for' 循环中放置两个增量语句?

在 For 循环增量中使用 if else

对于 R 中的大型必要循环,“while 循环”是不是应该优于“for 循环”?