인프런 커뮤니티 질문&답변

magnet0922님의 프로필 이미지
magnet0922

작성한 질문수

[R을 R려줘] R 기초다지기

함수

사용자 정의 함수

해결된 질문

작성

·

227

2

사용자 정의 함수를 생성할 때 중괄호 위치가 중요한가요? return과 같은 줄에 사용하면 에러가 뜨고 밑줄에 사용하면 정상적으로 작동하는데 그 이유가 무엇인가요?

답변 1

0

김승욱님의 프로필 이미지
김승욱
지식공유자

안녕하세요. magnet0922님

괄호의 위치는 R 뿐만 아니라 다른 언어에서도 매우 중요합니다.

예를 들어 다음과 같은 경우는 에러가 발생하지 않습니다.

asdf = function(x){
  return(1)
}

 

하지만 다음의 경우에는 에러가 발생하는 것이 정상입니다만, 여기서 분명 에러가 발생했을 것으로 예상이 됩니다.

asdf = function(x){
  return(1)}

 

다음의 경우에도 에러가 발생하지 않습니다.

asdf = function(x){return(1)}

 

한 줄로 처리를 하는 경우는 return() 함수와 같은 줄에 있어도 관계 없으나 사용자 정의 함수를 2줄 이상으로 정의 하는 경우는 중괄호를 별도의 행에 위치 시키는 것을 권장합니다.

이번의 경우에는 RStudio에서 개별 행을 실행시켜서 아마 다음과 비슷한 에러를 보셨을 겁니다.

Error: unexpected '}' in "  return(1)}"

기본적으로 RStudio에서는 중괄호의 시작 또는 끝이 있는 행에 커서를 위치 시킨 상태에서 코드를 실행하면 그 중괄호에 엮이는 코드를 전부 실행하게 됩니다. 그런데 이 경우에는 RStudio가 전체 묶음 코드를 실행시킨 것이 아니라 한 줄의 코드만 실행한 것으로 판단됩니다.

 

다음과 같이 블럭 지정하여 한 번에 실행시키면 문제 없이 동작하는 것을 볼 수 있습니다.

image

혹시 상기 내용에 대한 문제가 아니었다면 다시 좀 더 상세하게 재질문 바랍니다.

 

감사합니다.

 

magnet0922님의 프로필 이미지
magnet0922

작성한 질문수

질문하기