R/R

[R] 04. 함수(function)

구름솜:D 2023. 11. 22. 19:10
728x90

함수란?

- 특정한 기능을 수행하기 위해 사전에 만들어 놓은 프로그래밍 구문을 묶어 놓은 것

 

함수의 종류

내장함수) 별도의 패키지를 설치하지 않고 사용할 수 있는 함수

외장함수) 별도의 패키지를 설치하고 사용할 수 있는 함수

사용자 정의 함수) 사전에 정의된 내장함수 이외에 사용자가 임의로 원하는 기능을 만들어서 사용할 수 있는 함수

 

 

 

내장함수

별도의 패키지를 설치하지 않고 사용할 수 있는 함수

ex. print(), sum(), Sys.Date(), c(), 형변환함수(as.numeric())

* Sys.Date()함수 사용 시 R은 글자의 대소문자를 구분하기에 정확하게 표기할 것

* 벡터관련내장함수 c(), append(),names()

 

 

 

외장함수

별도의 패키지를 설치하고 사용할 수 있는 함수

패키지(package) : 여러 함수를 기능에 따라 묶어서 제공하는 것,

                              하나의 패키지를 설치하면 안에 저장되어있는 여러 외장함수를 사용가능

 

패키지 설치 밎 사용

install.packages('패키지명')  으로 최초 설치 후
library(패키지명)           으로 로딩
remove.packages('패키지명')

- install.packages()함수를 사용하여 설치 필요

- library() 함수를 사용하여 불러오는 로드 과정을 수행

- 패키지 설치는 최초에 한번만 수행

- 패키지 로드는 일회성이기에 R 스튜디오를 시작할 때 마다 다시 실행

- 패키지를 설치, 삭제 시에는 패키지명을 ' '나 " "에 입력

- 패키지를 로드할 시에는 함수를 사용하는 것이기에 인수에 ' '나 " " 입력 불가 

 

 

패키지에 있는 외장 함수 목록 조회하는 방법

1) 패키지명::

- 패키지 안에 있는 함수 목록 조회 가능

- 자동완성 기능이 안되면 조회 불가
2) ls()함수

- 지정된 변수의 목록을 반환하는 함수

- ls('package:패키지명')      

- ls('package:base')      # 내장함수의 종류를 조회하는 방법 

 

 

사용자 정의 함수

사전에 정의된 내장함수 이외에 사용자가 임의로 원하는 기능을 만들어서 사용할 수 있는 함수

사용자 정의 함수는 다음과 같은 형식으로 정의한다.

함수명 <- function(...) {
  내부 로직
  return(리턴객체)
}

# ex.
f1 <- function(x) {
  return(x * 100)
}

f1(123)     #[1] 12300

 

사용자 함수 정의 시 여러개의 인자를 정의 할 수 있고, 각 인자는 기본 값을 가질 수 있으며

여러개의 인자를 선언 할 시, 먼저 선언된 인자가 기본값을 가지면 뒤에 선언된 인자도 기본값을 선언해줘야한다.

 

# x인자에는 기본값을 0으로 선언했으나 y에는 기본값을 선언이 되어 있지 않아 에러 발생
f2 <- function(x=0, y) {
  res <- x + y
  return(res)
}
   
# 이와 같이 먼저 선언된 인자에 기본값을 선언하면 뒤에 선언하는 인자도 기본값을 선언해야함
f2 <- function(x=0, y=0) {
  res <- x + y
  return(res)
}

# x,y를 선언한 함수에 x만 호출할 시 y는 기본값으로 함수 수행
f2(30)                    # [1] 30
f2(30, 40)                # [1] 70
f2(c(30, 40))             # [1] 30 40   
f2(c(30, 40), c(10,40))   # [1] 40 80

 

매개변수와 인자(인수)

매개변수(parameter) : 함수를 정의할 때 사용되는 임의의 값 

                           ex. function(x=0,y=0)의 x=0,y=0이 매개변수

인자=인수(argument) : 함수를 호출할 때 사용되는 값   

                           ex. f1(123)의 123이 인자(인수)

'R > R' 카테고리의 다른 글

[R] 09. 조건문(ifelse/if문)  (0) 2023.12.05
[R] 08. 문자열관련함수(stringr)  (0) 2023.11.29
[R] 03. 형 변환(casting)  (0) 2023.11.22
[R] 02. 인덱싱(indexing)  (0) 2023.11.22
[R] 01. R의 자료구조  (0) 2023.11.22