logo

Rでのelse if文の使用:「Error: unexpected else in else」の問題を解決する 📂R

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('셋')}
}

分岐文の実行結果は次の通りだ。

20171111_144344.png

問題

言うまでもないけど、else ifを増やせば、さらに多くの分岐を作り出すことができる。その一方で、明らかに合っているようなのに、条件文でelseがエラーを起こす場合がある。ふつうにコンソールで簡単な確認作業をしたい時に、以下のような問題がよく発生する。

Error: unexpected 'else\' in "else"

原因

20171111_144353.png

このようなエラーは、if文が成立するためにelseが必ず必要ではないから起きるものだ。ifはそれ自体で条件を満たしているか判断した後、真なら与えられたコードを実行するだけだ。そのため、上の行のifは全部の機能を果たして、新しく始まる次の行をelseが引っ張ることになってしまったのだ。

解決

問題は二行をブロック{ }の中に入れるだけで簡単に解決できる。

20171111_144557.png

一つのブロック内にあるため、if文がelseの下にあると推測され、正常にコードが実行される。