我以前用Java编写for
循环:
for (ii=10; ii<length(myarray); ii++) { }
如果length(my array)
小于10,则循环不执行。我怎么用R语言做这个?
如果我尝试使用R语言:
for (ii in 10:length(myarray)) { }
例如,如果length(myarray)
小于10,则循环将执行。如何编写循环以便在这种情况下不执行?
答案 0 :(得分:11)
您可以使用for (ii in tail(seq_along(myarray), -9))
。当tail(..., -9)
的长度小于10时,numeric(0)
将返回myarray
。
答案 1 :(得分:5)
使用if
。
if (length(myarray) >= 10) {
for (ii in 10:length(myarray)) {...}
}
如果这个太清楚了,你可以使用while
来尝试使R更像Java
ii = 10
while (ii < length(myarray)) {
...
ii = ii + 1
}
但我从未见过R程序员这样做过。正如您所说,它确实将if
和for
替换为单个while
,但它增加了初始化ii
并在循环内增加它的需要。
答案 2 :(得分:2)
为了完整起见,请注意您也可以通过修改seq
来电来执行此操作:
for(i in seq(from=10, to=length(myarray), by=1) {...}
但是,如果length(myarray)
小于10,则会产生错误,而不是执行。根据您正在做的事情,这可能是也可能不是。