Rでのelse if文の使用:「Error: unexpected else in else」の問題を解決する
概要
Rにはswitch文のような分岐文がないから、if文を複数繋げて分岐を分けなければならない。ここで、この条件文っていうのがプログラミング言語ごとにifとelseは全部同じなんだけど、唯独else ifだけが違うことがある。elseifとくっつけて書いたり、まるでelifのように短縮して書く場合がその例で、Rはきちんと空白を入れたelse ifを使う。いろんなプログラミング言語を扱えるようになって、プログラミングの技術が上がっても、こんな小さな違いはいつも混乱するものだ。
for(i in 1:3)
{
if(i==1) {print('하나')}
else if(i==2) {print('둘')}
else {print('셋')}
}
分岐文の実行結果は次の通りだ。
問題
言うまでもないけど、else ifを増やせば、さらに多くの分岐を作り出すことができる。その一方で、明らかに合っているようなのに、条件文でelseがエラーを起こす場合がある。ふつうにコンソールで簡単な確認作業をしたい時に、以下のような問題がよく発生する。
Error: unexpected 'else\' in "else"
原因
このようなエラーは、if文が成立するためにelseが必ず必要ではないから起きるものだ。ifはそれ自体で条件を満たしているか判断した後、真なら与えられたコードを実行するだけだ。そのため、上の行のifは全部の機能を果たして、新しく始まる次の行をelseが引っ張ることになってしまったのだ。
解決
問題は二行をブロック{ }の中に入れるだけで簡単に解決できる。
一つのブロック内にあるため、if文がelseの下にあると推測され、正常にコードが実行される。