(a)/(c) mostly, I think. The crux is that "next" is unhappy about being
evaluated in a different environment than the containing loop. Witness this:
> for (i in 1:10) {if (i == 5) evalq(next); print(i)}
[1] 1
[1] 2
[1] 3
[1] 4
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
> for (i in 1:10) {if (i == 5) evalq(n
If I want to use with inside a loop, it seems that next gets confused.
To reproduce:
for(lst in list(list(a = 1), list(a = 2), list(a = 3)))
{
with(lst, if(a == 2) next else print(a))
}
I expect 1 and 3 to be printed, but I see
[1] 1
Error in eval(expr, envir, enclos) :
no loop for break/ne