I understand the usual way to write an \"if - else if\" statement is as follow:
if (2==1) {
print(\"1\")
} else if (2==2) {
print(\"2\")
} else {
print
R reads these commands line by line, so it thinks you're done after executing the expression after the if statement. Remember, you can use if without adding else.
Your third example will work in a function, because the whole function is defined before being executed, so R knows it wasn't done yet (after if() do).