使用for循环进行迭代的最佳方法

使用for循环进行迭代的最佳方法,r,loops,for-loop,R,Loops,For Loop,我正在寻找在R中迭代的最佳方法。我知道一些简单的解决方案,比如: times <- 3 for(i in 1:times){ } 因此,如果我想从开始迭代到结束: for(i in seq_len(end - start)) 但如果结束-开始

我正在寻找在
R
中迭代的最佳方法。我知道一些简单的解决方案,比如:

times <- 3
for(i in 1:times){

}
因此,如果我想从
开始
迭代到
结束

for(i in seq_len(end - start))
但如果
结束-开始<0
,则:

seq_len(-1)
Error in seq_len(-1) : argument must be coercible to non-negative integer
我知道我可以在循环之前检查
结束-开始<0
,但这不是非常干净的解决方案。。。还有其他想法吗

澄清一下-我正在寻找类似于其他编程语言(如C++/Java)的解决方案:

for(int i = start; i < end; i++)
for(int i=start;i
因此,如果
start=5
end=3
循环甚至不会启动。

给出上面的示例(C++/Java),您实际上是在查看
循环

要复制您的示例:

start = 5
end = 3
i <- start

while(i <= end){
  print(i)
  i = i+1
}
start=5
结束=3

我只需编写自己的helper函数

loop_seq <- function(start,end) {
    if(end<start) return(integer(0))
    seq(start, end)
}

for(i in loop_seq(3,4)) {print(i)}
# [1] 3
# [1] 4
for(i in loop_seq(3,3)) {print(i)}
# [1] 3
for(i in loop_seq(3,2)) {print(i)}
# {nothing}

loop\u seq如果在对象本身上进行迭代,则可以使用
seq\u沿着
。这能解决你的问题吗?如果没有更多的例子,很难说什么是有意义的——这个循环做了什么?但是,您可以在
中为
执行
abs(结束-开始)
,这是绝对值(不是负值)-这有帮助吗?没有<代码>顺序
不起作用,我有范围,没有对象。我已经编辑了这个问题:)为什么要投反对票?这个问题怎么了?@bartektartanus,可以理解,但我相信R
for
循环至少会运行一次,除非您事先提供条件。当然,如果可能的话,我想被这里的一位R大师证明我是错的。我可以证明:)只需检查这两个例子:
for(I in integer(0)){print(I)}
不打印任何东西,但是这个做
for(I in integer(1)){print(I)}
@bartektartanus,非常有趣。我没有考虑过0整数,但我相信这可能是唯一的例外。据我所知,如果迭代器小于“end”迭代器,没有附加条件,就无法使for循环不运行。是的,我在地铁上也有同样的想法:)
loop_seq <- function(start,end) {
    if(end<start) return(integer(0))
    seq(start, end)
}

for(i in loop_seq(3,4)) {print(i)}
# [1] 3
# [1] 4
for(i in loop_seq(3,3)) {print(i)}
# [1] 3
for(i in loop_seq(3,2)) {print(i)}
# {nothing}