시작하기무료로 시작하기

R은 인수를 값으로 전달합니다

제목에서 이미 답이 드러납니다. R은 인수를 값으로 전달합니다. 이게 무슨 뜻일까요? 간단히 말하면, R 함수는 함수에 입력한 변수를 변경할 수 없다는 뜻입니다. 간단한 예를 살펴봅시다(콘솔에서 직접 실행해 보세요):

triple <- function(x) {
  x <- 3*x
  x
}
a <- 5
triple(a)
a

함수 내부에서 triple() 함수의 인수 x는 값에 3을 곱한 값으로 다시 할당됩니다. 그런 다음 이 새로운 x가 반환됩니다. 이 함수를 값이 5인 변수 a와 함께 호출하면 15를 얻게 됩니다. 하지만 a의 값은 바뀌었을까요? 만약 R이 atriple()참조로 전달한다면, 함수의 내부에서 x를 다시 할당한 내용이 함수 밖의 변수 a에도 그대로 반영될 것입니다. 그러나 R은 값으로 전달하므로, 함수에 전달한 R 객체는 명시적인 할당을 하지 않는 한 절대 변경되지 않습니다. atriple(a)를 호출한 뒤에도 여전히 5입니다.

다음 코드에 대해 아래 문장들 중 어떤 것이 거짓인지 말할 수 있나요?

increment <- function(x, inc = 1) {
  x <- x + inc
  x
}
count <- 5
a <- increment(count, 2)
b <- increment(count)
count <- increment(count, 2)

이 연습은 강의의 일부입니다

중급 R

강의 보기

실습형 인터랙티브 연습문제

이론을 실습으로 바꾸는 인터랙티브 연습 중 하나를 만나보세요

연습 시작