[R] 함수 만들기 기초
2018. 6. 3. 21:02
R에서 함수는 어떻게 만들 수 있을까? 아래와 같이 만들 수 있다.
- function_name = function(arg_1, arg_2, …) {expression}
보통 {} 안은 들여쓰기를 한다. 하지만 expression이 한 줄이라면 굳이 들여쓰기를 하지 않고 또 중괄호를 쓰지 않아도 코드는 잘 실행된다. 그래도 가독성을 위해서라면 중괄호와 들여쓰기를 사용하는 것이 좋겠다.
다른 프로그래밍 언어처럼 return()을 사용해 반환값을 지정할 수 있다. 한데 여기서 유의할 것이 있다.
- return()이 없으면 함수의 가장 마지막 줄을 반환한다.
- return() 뒤의 내용은 실행되지 않는다.
quadratic <- function(x)
{
print("이차 함수 y=x^2")
y <- x^2
return(y)
print("y를 반환합니다")
}
quadratic(10) #맨 마지막 줄이 실행되지 않는 것을 알 수 있다.
## [1] "이차 함수 y=x^2"
## [1] 100
매클로린 급수를 사용해 자연상수를 근사하는 함수를 짜 볼 수 있다. 무한히 더할 수는 없으니까 적당히 200번 째 항 정도에서 끊어보자. (여기서는 반복분 for 문을 사용했다. 하지만 if문을 사용해서 코드를 짤 수도 있겠다.)
\[ \sum_{n=0}^{\infty}\frac{1}{n!} = e \]
emake <- function(){
e <- 0
for (n in 0:200){
e <- e + 1/(factorial(n))
}
return(e)
}
함수에는 인자를 지정할 수 있다. 위의 자연상수를 근사하는 함수를 활용해, 입력 받은 숫자 k 항까지 자연상수를 근사하는 함수를 만들어 보자.
emake2 <- function(x)
{
e <- 0
for (x in 0:x)
{
e <- e + 1/factorial(x)
}
return(e)
}
e <- emake2(10) # 10차 항까지 자연상수를 근사
'기타 공부' 카테고리의 다른 글
[R] 자료 객체 (4): 데이터 프레임, 리스트 (0) | 2018.06.04 |
---|---|
[R] 문자열 합치기: Paste 함수 (0) | 2018.06.04 |
[R] 자료 객체 (3): 배열 (array) (0) | 2018.06.03 |
[R] identical, all equal 함수의 차이 (0) | 2018.05.27 |
[R] 자료 객체 (2): 행렬 matrix (0) | 2018.05.27 |