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

use*_*688 1 r

我习惯用forJava 编写循环:

for (ii=10; ii<length(myarray); ii++) { }
Run Code Online (Sandbox Code Playgroud)

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

如果我尝试使用R语言:

for (ii in 10:length(myarray)) { }
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*rde 11

你可以用for (ii in tail(seq_along(myarray), -9)).当长度小于10 时tail(..., -9)将返回.numeric(0)myarray

  • @experimenter off-by-9错误:`for(i in 9 + seq_along(x [-1:-9])){cat(i,"\n")}`(x是myarray) (2认同)

Gre*_*gor 5

使用if.

if (length(myarray) >= 10) {
    for (ii in 10:length(myarray)) {...}
}
Run Code Online (Sandbox Code Playgroud)

如果这太清楚了,你可以while尝试使R更像Java

ii = 10
while (ii < length(myarray)) {
    ...
    ii = ii + 1
}
Run Code Online (Sandbox Code Playgroud)

但我从来没有见过R程序员这样做.确实,如你所说,更换iffor用一个单一的while,但它增加了需要初始化ii,并增加它的循环中.

  • 什么都没有*更清楚*.这是标准的R做事方式.对于更类似Java的代码,您可以使用`while`循环.或者您可以在for循环中编写一个表达式,如果length(myarray)<10,则返回NULL,但它只是在不同的地方使用`if`语句. (3认同)
  • @ user46688:根据需要编写Java循环,但如果要在R中编写循环,则应该使用`if`. (2认同)