본문 바로가기
R특강/하루만에 끝내는 R 기초

[하루만에 끝내는 R기초] 8교시. 함수, 패키지

by 만다린망고 2022. 11. 14.
반응형

지난시간에 조건문인 if 문과 반복문인 for문을 배웠습니다. if문은 특정 조건이 만족하면 문장을 실행하는 것이었습니다. for은 어떤 자료구조 안에 있는 원소를 하나씩 대입하며 문장을 실행하는 것이었습니다. 

 

목차를 가져와서 오늘 배울 내용이 무엇인지 알아봅시다. 

 

1교시) 강의 소개

2교시) R설치, R스튜디오 설치
3교시) 자료형
4교시) 변수
5교시) 자료구조
6교시) 연산자(산술,비교,논리)
7교시) 조건문, 반복문
8교시) 함수, 패키지
9교시) 그래프(박스플롯), t검정
10교시) 단축키 소개 및 전체요약

 

오늘 배울 내용은 함수와 패키지입니다. 함수는 값을 입력하면 어떤 조작을 한 뒤, 값을 출력해주는 것을 말합니다. 함수를 직접 만든는 법을 배우기 전에 R에서 기본 제공하는 함수를 사용해보며 함수가 무엇인지 알아봅시다. 

 

함수

4강에서 만든 데이터를 가져옵시다. 

 

 

아래 데이터를 복사 붙여넣기해서 사용하시면 됩니다. 

 

name=c('김함수','박산술','이비교','송논리','최검정','유반복')
gender=c('남','남','남','여','여','여')
age=c(35,27,42,33,25,47)
height=c(183,177,175,167,155,173)
weight=c(72,69,78,58,47,65)

 

나이의 평균을 계산하고 싶다고 합시다. 이때 R에서 제공하는 mean 이라는 함수를 사용할 수 있습니다. 아래와 같이 사용합니다. 

 

 

mean 은 함수이름입니다. 괄호 안에는 입력값을 입력합니다. 여기서는 age 라는 벡터입니다. mean 함수에 age 벡터를 입력하고 실행하면 age 벡터의 평균을 출력해줍니다. 이것이 함수입니다. 

 

R에서는 수많은 기본함수들을 제공합니다. 기본 함수들만 사용해도 왠만한 통계분석은 할 수 있습니다. 그런데 종종 직접 함수를 정의해서 사용하고 싶은 경우가 생깁니다. 그런 상황을 위해서 함수 정의 방법을 배워봅시다. 

 

함수를 정의해야하는 한가지 상황을 설정해보겠습니다. 혹시 bmi 라고 들어보셨나요? bmi 는 아래와 같이 정의됩니다. 

 

$bmi=\frac{weight}{height^2} (kg/m^2)$

 

키와 몸무게를 입력하면 bmi를 계산해주는 함수를 한번 만들어보겠습니다. 만들어진 함수부터 적고 설명하겠습니다. 

 

cal_bmi=function(weight,height) {

	bmi=weight/(height/100)^2 #cm을 m로

	return (bmi)
}

 

cal_bmi 는 함수의 이름입니다. weight, height 는 입력값이구요. return 은 출력값입니다. 함수를 정의할 때 사용하는 구조는 아래와 같습니다.

 

함수이름=function(입력값) {

    내용

    return (출력값)

}

 

cal_bmi 함수는 먼저 mm 로 단위로 입력된 height 를 cm 단위로 바꿔줍니다. 이후 bmi 를 계산합니다. cal_bmi 함수를 직접 사용해봅시다. 

 

 

패키지

만약 우리가 위와 같은 함수들을 많이 만들었다고 해봅시다. 만든 함수들이 너무나 유용해서 사람들과 공유하고 싶어졌다면, 패키지로 묶어서 사람들에게 공유할 수 있습니다. 패키지는 여러 유용한 함수들의 모음입니다. 함수 뿐만 아니라 데이터도 패키지에 포함시킬 수 있습니다. 

이미 사람들이 유용한 패키지들을 많이 만들어 놓았습니다. 우리는 필요한 패키지들을 다운받아서 사용하면 됩니다. 

패키지를 다운받는 방법을 알아봅시다. 엑셀 파일을 읽어오는 함수가 들어있는 패키지를 설치할 것입니다. 패키지 이름은 readxl 입니다. 콘솔 창에 아래 코드를 입력하면 설치됩니다. 

install.packages("readxl")


설치된 패키지는 불러와야 사용할 수 있습니다. 아래와 같이 불러옵니다. 한번 불러오면 영구적으로 불러와 지는 것이 아니라 매번 불러와야 합니다. 

library(readxl)


오늘은 함수와 패키지에 대해서 공부했습니다. 

 

 

#강의영상

 

반응형

댓글