R 에서 else if문 사용하기 Error: unexpected else in else 해결

R 에서 else if문 사용하기 Error: unexpected else in else 해결

How to fix Error unexpected else in else in R

개요

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 아래가 있을 것이라는 것을 짐작하고, 정상적으로 코드가 실행된다.

댓글