R 함수
ITPAPER(호쌤,쭈쌤)에 의해 작성된 ≪R 함수≫은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
이 라이선스의 범위 이외의 이용허락을 얻기 위해서는 leekh4232@gmail.com으로 문의하십시오.
함수란 자주 사용되는 명령어들을 그룹화해서 생성한 재사용 가능 단위를 의미합니다. 어릴적 공부한 수학의 함수도 같은 의미로 이해할 수 있습니다.
수학에서의 함수
일반적인 수학 식에서는 함수의 이름을 f
로 지정한다.
1
2
f(x) = x + 5
f(1) ---> 6
함수의 이름을 hello
라고 지정한 경우
1
2
hello(a) = a + 1
hello(10) ---> 11
- f, hello : 함수 이름.
- x, a : 매개변수 혹은 파라미터. 함수가 동작하는데 필요한 조건값
- x + 1, a + 5 : 함수의 수식
즉, f라는 키워드나 hello라는 명령어로 설정된 수식을 재사용할 수 있다.
#01. 함수의 사용
1) 함수의 정의
구문형식
1
2
3
이름 <- function() {
... 명령어 ...
}
두 개의 메시지를 출력하는 함수 정의하기
1
2
3
4
say_hello <- function() {
print("Hello BigData")
print("안녕 빅데이터")
}
2) 준비된 함수 사용하기
함수의 이름을 명령어처럼 사용한다. 이를 “함수를 호출한다”고 한다.
1
2
say_hello()
say_hello()
#> 출력결과 [1] “Hello BigData” [1] “안녕 빅데이터” [1] “Hello BigData” [1] “안녕 빅데이터”
#02. 함수의 파라미터
함수를 정의할 때 ()
안에 명시되는 조건값.
1) 파라미터를 갖는 함수 정의하기
function
키워드 뒤의 괄호안에 필요한 조건값을 명시한다.
1
2
3
4
5
6
f1 <-function(x) {
y <- x + 1
tpl <- "f1(%d) => %d + 1 = %d"
result <- sprintf(tpl, x, x, y)
print(result)
}
2) 파라미터를 포함한 함수의 호출
파라미터가 정의된 함수는 호출할 때 반드시 해당 값을 전달해야만 한다.
1
f1(2)
#> 출력결과 [1] “f1(2) => 2 + 1 = 3”
1
f1(5)
#> 출력결과 [1] “f1(5) => 5 + 1 = 6”
1
f1(7)
#> 출력결과 [1] “f1(7) => 7 + 1 = 8”
#03. 다중 파라미터
1) 다중 파라미터를 갖는 함수 정의하기
함수가 정해진 동작을 수행하는데 필요한 조건값이 두 개 이상인 경우 콤마(,
) 로 구분하여 정의한다.
1
2
3
4
5
6
f2 <-function(x, y) {
z <- x + y
tpl <- "f2(%d, %d) => %d + %d = %d"
result <- sprintf(tpl, x, y, x, y, z)
print(result)
}
2) 다중 파라미터를 포함한 함수의 호출
다중 파라미터를 갖는 함수를 호출할 때는 콤마로 구분하여 조건값들을 전달할 수 있다.
1
f2(2, 1)
#> 출력결과 [1] “f2(2, 1) => 2 + 1 = 3”
1
f2(5, 3)
#> 출력결과 [1] “f2(5, 3) => 5 + 3 = 8”
1
f2(7, 5)
#> 출력결과 [1] “f2(7, 5) => 7 + 5 = 12”
#04. 파라미터에 기본값 설정하기
함수를 정의하면서 마지막 파라미터부터 순차적으로 기본값을 정의할 수 있다.
기본값이 정의된 함수는 호출시에 해당 값을 생략 할 수 있다.
1) 기본값을 갖는 파라미터를 포함하는 함수 정의
1
2
3
4
5
6
my_sum <- function(x, y, z=0) {
k <- x + y + z
tpl = "sum(%d, %d, %d) -> + %d + %d + %d = %d"
result <- sprintf(tpl, x, y, z, x, y, z, k)
print(result)
}
2) 호출하기
모든 파라미터를 전달한 경우
1
my_sum(3, 6, 9)
#> 출력결과 [1] “sum(3, 6, 9) -> + 3 + 6 + 9 = 18”
기본값이 정의된 파라미터를 생략한 경우
1
my_sum(100, 200)
#> 출력결과 [1] “sum(100, 200, 0) -> + 100 + 200 + 0 = 300”
#05. 리턴(반환)
함수 안에서 return
키워드를 사용하여 자신이 호출된 위치로 결과값을 되돌려 주는 처리.
1) 결과값을 리턴(반환)하는 함수 정의하기
1
2
3
4
5
my_plus <- function(x, y) {
z = x + y
# 자신이 호출된 위치로 값을 되돌려준다.
return(z)
}
2) 함수의 결과값 리턴받기
리턴받은 값을 다른 변수에 대입
1
2
a <- my_plus(10, 20)
print(a)
#> 출력결과 [1] 30
리턴값을 바로 출력하기
함수가 중첩되어 사용되는 경우 가장 안쪽의 함수가 먼저 실행된다.
1
print( my_plus(100, 200) ) # print(300)
#> 출력결과 [1] 300
3) 함수의 처리 중단.
- 함수는 수행 도중
return
을 만나면 그 즉시 수행을 중단한다. - 주로 특정 조건이 충족되었을 때 함수의 실행을 중단하기 위해 사용되는 기법.
1
2
3
4
5
6
7
8
foo <- function(x, y) {
if ( x < 10 || y < 10) {
return(0)
}
z <- x + y
return(z)
}
1
print( foo(100, 200) )
#> 출력결과 [1] 300
1
print( foo(1, 2) )
#> 출력결과 [1] 0
ITPAPER(호쌤,쭈쌤)에 의해 작성된 ≪R 함수≫은(는) 크리에이티브 커먼즈 저작자표시-비영리-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.
이 라이선스의 범위 이외의 이용허락을 얻기 위해서는 leekh4232@gmail.com으로 문의하십시오.