Sign In

[R] 함수, 사용자 정의 함수

Y
Yerim
  1. R

함수

함수는 어떤 값 x를 입력받아 정해진 계산을 수행한 후 그 결과값을 돌려주는 장치
y <- sqrt(100) # 제곱근을 구하여 저장
y
함수의 매개변수 (parameter)
프로그래밍에서 함수의 입력값을 받는 변수를 매개변수(parameter)라
함수의 정의에 맞추어 매개변수를 입력하면 정의된 결과값을 얻을 수 있음
d <- c(1, 7, 4, 2, 3)
sort(d) # 오름차순
sort(d, decreasing=TRUE) # 내림차순
decreasing=FALSE와 같이 매개변수명=매개변수값의 형태로 입력
매개 변수는 필수 매개변수선택적 매개변수로 구분
필수 매개변수: sort() 함수에서 매개 변수 x와 같이 반드시 입력
선택적 매개변수: 사용자가 생략할 경우를 대비하여 미리 어떤 값**(기본값, default value)**을 지정

내장 함수

별도의 패키지를 설치하지 않고 사용할 수 있는 함수는 내장 함수라고 한다.
R을 설치하면 기본으로 포함되어 있어 별도의 구분 작성 없이 바로 호출할 수 있다.
paste()
여러 개의 문자열이나 숫자값을 결합하여 하나의 문자열로 만드는 기능
# 1. paste)의 기본적인 사용법
str <- paste('good', 'morning', sep=' / ') # /를 기준으로 문자열 결합

# 2. 변수 a,b, c를 paste()함수로 연결하여 출력
a <- '나의 나이는'
b <- 20
c <- '입니다'
paste(a, b, c, sep=' ')
# [1] "나의 나이는 20 입니다"

# 3. a, b연결, 새로운 벡터에 저장
a <- 1:12
b <- '월'
c <- paste(a, b, sep='')
c

# [1] "1월"  "2월"  "3월"  "4월"  "5월"  "6월"  "7월" 
# [8] "8월"  "9월"  "10월" "11월" "12월"

사용자 정의 함수

사용자가 스스로 만드는 함수
여러 이 반복될 때 함수를 생성하면 자동화할 때 유용하다.
함수명 <- function(매개변수 목록){
    실행할 명령문(들)
    return(함수의 실행 결과)
}
함수명: 사용자 정의 함수의 이름으로 사용자가 만들 수 있다.
매개변수 목록: 함수에 입력할 매개변수 이름을 지정한다.
실행할 명령문(들): 함수에서 처리하고 싶은 내용을 작성한다.
함수의 실행 결과: 함수의 실행 결과를 반환하며, 반환 결과가 없으면 return() 함수를 생략한다.
함수가 구현한 값을 인자에 반환하여 변수에 저장하기 위해서는 return() 함수가 반드시 필요하다.
매개 변수 기본값 설정
# 7-15
mydiv <- function(x, y=2){ # y의 기본값을 2로 설정
  result <- x/y
  return(result)
}
mydiv(x=10, y=3)
mydiv(10, 3)
mydiv(10)
여러 개의 값을 반환
list() 함수를 이용하여 여러 개의 결과값을 하나로 묶고 이것을 반환
# 7-16
myfunc <- function(x, y){
  val.sum <- x+y
  val.mul <- x*y
  return (list(sum=val.sum, mul=val.mul))
}

result <- myfunc(5, 8)
s <- result$sum
m <- result$mul
cat('5+8 = ', s, '\n')
cat('5*8 = ', m, '\n')
사용자 정의 함수의 저장과 재실행
mydiv <- function(x, y=2){
    result <- x/y
    return(result)
}
# 7-17
setwd('C:\\Windows')
source("myfunc.R")
Yerim-DevNote
Subscribe to 'Yerim-DevNote'
Subscribe to my site to be the first to receive notifications and emails about the latest updates, including new posts.
Join Slashpage and subscribe to 'Yerim-DevNote'!
Subscribe
👍