我想只对一些值进行迭代,所以我使用了这个:
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,但是条件必须检查k的值是否超过i的下一个值。
有办法做到这一点吗?
我将借助C来进一步解释,
for(i=0; i < 10; i++)
{
for(k=i;k <= i+1;k++)
{
printf("%d", k);
}
}
该链接包含上述代码http://codepad.org/relkenY3的输出
这在C中很容易,因为下一个值是按顺序的,但是这里的下一个值是未知的,因此问题就来了。
2条答案
按热度按时间3pvhb19x1#
你应该做的是遍历两个向量:
函数是
mapply
(看看?mapply
)。您的伪代码的近似翻译是:但也许你会觉得这个更有趣
ejk8hzay2#
我认为答案是使用
seq_along
并将其用作“present”的索引,但正如其他人指出的那样,即使进行了简单的修改,您的代码也不能保证提供您所期望的内容。K <- K=1
赋值向前跳得太远,无法在任何点提供值3,并且终止条件也不清楚。它变成了一个无限循环的形式,你构造。用这个工作;