R语言:如何编写类似java的循环?

时间:2015-06-04 16:54:15

标签: r

我以前用Java编写for循环:

for (ii=10; ii<length(myarray); ii++) { }

如果length(my array)小于10,则循环不执行。我怎么用R语言做这个?

如果我尝试使用R语言:

for (ii in 10:length(myarray)) { }

例如,如果length(myarray)小于10,则循环将执行。如何编写循环以便在这种情况下不执行?

3 个答案:

答案 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程序员这样做过。正如您所说,它确实将iffor替换为单个while,但它增加了初始化ii并在循环内增加它的需要。

答案 2 :(得分:2)

为了完整起见,请注意您也可以通过修改seq来电来执行此操作:

for(i in seq(from=10, to=length(myarray), by=1) {...}

但是,如果length(myarray)小于10,则会产生错误,而不是执行。根据您正在做的事情,这可能是也可能不是。