더북(TheBook)

제공된 인수 값들의 단조성을 알려 주는 test_direction 함수를 만든 예제다. 다음 절까지 이 예제를 완성해 갈 것이다. x, y, z의 값이 단조 증가하면 함수는 1을 반환하고, 그렇지 않으면 0을 반환한다. 단조 감소할 때는 -1을 반환한다. 이 함수에서는 &를 사용하여 벡터화한 AND 연산을 수행한다.

> test_direction <- function(x, y, z) {
+     if (x < y & y < z) 1
+     else if (x > y & y > z) -1
+     else 0
+ }

함수의 인수가 스칼라 값이라면 다음과 같이 이 함수는 완벽히 동작한다.

> test_direction(1, 2, 3)
[1] 1

&는 벡터화한 연산자이기 때문에 인수 가운데 하나가 여러 요소를 갖는 벡터일 때는 다중 요소 벡터를 반환한다. 하지만 if는 단일 요소 논리형 벡터만 적용이 가능하기 때문에 다중 요소 벡터가 온다면 다음 경고를 발생시킨다.

> test_direction(c(1, 2), c(2, 3), c(3, 4))
[1] 1
Warning message:
In if (x < y & y < z) 1 else if (x > y & y > z) -1 else 0 :
  the condition has length > 1 and only the first element will be used
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.