我想仅针对某些值迭代一个循环,所以我使用它:
present <- c(3,5,7,8)
for(i in present)
{
print(i)
}
给了我
[1] 3
[1] 5
[1] 7
[1] 8
但是我需要跳转到循环中的下一个值,比如我不想在上面的例子中打印5个。
我不能使用next,因为我希望它嵌套在这样的
中present <- c(3,5,7,8)
for(i in present)
{
k <- i
"Jump to next value of present"
while(k < "The next value for i should come here")
{
k <- k + 1
print(k)
}
}
输出为3 4 5 6 7 8但如果条件超过i的下一个值,则必须检查k的值。
无论如何要做到这一点?
我会帮助C进一步解释,
for(i=0; i < 10; i++)
{
for(k=i;k <= i+1;k++)
{
printf("%d", k);
}
}
该链接包含上述代码的输出 http://codepad.org/relkenY3
在C中很容易,因为下一个值是顺序的,但是这里的下一个值是未知的,因此问题就出现了。
答案 0 :(得分:2)
你应该做的是循环两个向量:
x <- head(present, -1)
# [1] 3 5 7
y <- tail(present, -1)
# [1] 5 7 8
并且执行此操作的函数是mapply
(请查看?mapply
)。您的伪代码的密切翻译将是:
invisible(mapply(function(x, y) while(x < y) {x <- x + 1; print(x)}, x, y))
但也许你会发现这更有趣:
mapply(seq, x + 1, y)
答案 1 :(得分:0)
我怀疑答案是使用seq_along
并将其用作“present”的索引,但正如其他人指出的那样,即使进行了这么简单的修改,您的代码也无法提供您期望的内容。 K <- K=1
赋值跳得太远,无论如何都不会提供值3,终止条件同样不明确。它会以您构造的形式变成无限循环。使用它;
present <- c(3,5,7,8)
for(i in seq_along(present))
{
k <- i
while(k < length(present) )
{
k <- k + 1
print(present[k])
}
}