首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R语言:如何编写类似于java的for循环?

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

Stack Overflow用户
提问于 2015-06-04 16:54:15
回答 3查看 304关注 0票数 1

我习惯于用Java编写for循环:

代码语言:javascript
复制
for (ii=10; ii<length(myarray); ii++) { }

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

如果我试着用R语言:

代码语言:javascript
复制
for (ii in 10:length(myarray)) { }

例如,如果length(myarray)小于10,则循环将执行。如何编写循环,使其在本例中不会执行?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-04 16:57:06

使用if

代码语言:javascript
复制
if (length(myarray) >= 10) {
    for (ii in 10:length(myarray)) {...}
}

如果这一点太清楚,您可以使用while尝试使R更像Java。

代码语言:javascript
复制
ii = 10
while (ii < length(myarray)) {
    ...
    ii = ii + 1
}

但我从没见过R程序员这么做。正如您所说,它确实将iffor替换为单个while,但它增加了初始化ii并在循环中增加ii的需要。

票数 5
EN

Stack Overflow用户

发布于 2015-06-04 17:04:48

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

票数 11
EN

Stack Overflow用户

发布于 2015-06-04 17:36:10

为了完整起见,请注意,您也可以通过修改seq调用来做到这一点:

代码语言:javascript
复制
for(i in seq(from=10, to=length(myarray), by=1) {...}

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30649797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档