본문 바로가기
R특강/짧은강의

R 기초 글 하나로 끝내기

by 만다린망고 2022. 3. 30.
반응형

아주 단 시간에 R 기초내용의 큰그림을 그려봅시다. R의 기본적인 내용은 아래 여섯가지입니다. 

1. 자료형
2. 연산자
3. 자료구조
4. 반복문, 조건문
5. 함수
6. 패키지

R 뿐만 아니라 대부분의 프로그래밍 언어의 공통적 특징입니다. 우리가 코딩을 하는 이유는 컴퓨터에게 일을 시키기 위해서입니다. 컴퓨터가 하는 일은 많은 경우 자료를 가공하는 일입니다. 자료를 변형하거나, 수식을 적용하여 무언가 계산하는 등의 일입니다. 

 

1. 자료형

우리가 사용하는 자료의 형태는 크게 두가지입니다. 숫자와 문자입니다. 따라서 컴퓨터 언어들도 숫자와 문자라는 기본 자료형을 갖도록 만들어져 있습니다. 

컴퓨터에는 한가지 자료형이 더 있습니다. 바로 논리형입니다. 논리형은 TRUE와 FALSE 라는 자료형을 말합니다. 숫자로는 0과 1에 대응합니다. 

요약하면, 자료형은 세가지를 기억하면 됩니다.

- 숫자형
- 문자형
- 논리형

 

2. 연산자

자료들 끼리는 연산이 가능합니다. 연산자는 크게 셋으로 나뉩니다. 

- 산술연산자 (+,-,*,/ 등)
- 비교연산자 (==,<,<= 등)
- 논리연산자 (&, |, !)

산술 연산자는 사칙연산과 같은 수학적 연산에 사용됩니다. 비교연산자는 값을 비교해서 참 또는 거짓을 반환합니다. 아래 연산은 어떤 결과를 반환할까요? 

> 3==4


==는 '같다'는 의미인데, 3과 4는 같지 않으니 FALSE를 반환합니다. 

논리연산자는 논리형 사이의 연산입니다. 대표적으로 and, or, not이 있습니다. 결과만 간단히 보면 아래와 같습니다. 

 

> TRUE & TRUE
[1] TRUE
> TRUE & FALSE
[1] FALSE
> FALSE & FALSE
[1] FALSE

> TRUE | TRUE
[1] TRUE
> TRUE | FALSE
[1] TRUE
> FALSE | FALSE
[1] FALSE

> !TRUE
[1] FALSE
> !FALSE
[1] TRUE

 

3. 자료구조

만약 아래와 같은 표를 R에 입력하려면 어떻게 해야 할까요? 

이름 성적
Kim A
Park B
Song A

자료형만 가지고는 다양한 종류의 자료를 다루기가 어렵습니다. 메모장 보다 엑셀이 자료를 다루기 편한 이유는 엑셀이 갖는 고유한 '구조' 때문입니다. R에서도 자료를 더 효율적으로 다루기 위한 여러가지 자료구조가 있습니다. 

- 벡터
- 배열
- 요인
- 리스트
- 데이터프레임

생각보다 많다고 느끼실 수도 있는데 필요에 의해 만들어진 것이라 버릴게 없습니다. 대표적으로 많이 사용하는 자료구조는 있습니다. 바로 벡터와 데이터프레임입니다. 벡터는 자료를 일렬로 나열해놓은 것입니다. 예를 들면 아래와 같습니다. 

v1=c(1,2,3,4,5)


여기서 우변이 벡터이고 v1이 변수입니다. 자료를 변수에 저장해서 사용할 수 있습니다. v1은 1,2,3,4,5 가 일렬로 나열되어 있는 벡터입니다. 순서가 있어서 인덱싱이 가능합니다. 두번째 원소에 접근하는 방법은 아래와 같습니다. 

v1[2]


배열은 벡터를 n차원 구조로 확장한 것입니다. 벡터와 행렬은 배열에 포함됩니다. 벡터는 1차원 구조인 배열이고, 행렬은 2차원 구조인 배열입니다. 아래는 3x3 배열 예시입니다. 

 

#배열 예시
ar=array(1:12,dim=c(3,4))

> ar
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9


요인은 범주형 데이터 입력에 사용됩니다. 성별, 혈액형과 같은 데이터가 범주형 데이터입니다. 만족도와 같이 순서가 있는 범주형 데이터도 있습니다. 아래는 만족도 범주형 데이터를 요인으로 정의한 예시입니다. 

 

#요인 예시
fac=factor(c(1,3,2,2),
           level=c(1,2,3),
           labels=c("bad","good","great"),
           ordered=TRUE)
           
> fac
[1] bad   great good  good 
Levels: bad < good < great


데이터프레임은 엑셀 시트와 비슷하다고 생각하시면 됩니다. 가장 많이 사용되는 자료구조입니다. 

 

#데이터프레임 예시
name=c('kys','ojh','psk')
gender=c('M','F','M')
height=c(182,165,177)

df=data.frame(name,gender,height)

> df
  name gender height
1  kys      M    182
2  ojh      F    165
3  psk      M    177


리스트는 끝판왕격인데, 모든 자료구조를 원소로 가질 수 있습니다. 

 

#벡터예시 
vec=c(1,2,3)

#배열 예시
ar=array(1:12,dim=c(3,4))

#요인 예시
fac=factor(c(1,3,2,2),
           level=c(1,2,3),
           labels=c("bad","good","great"),
           ordered=TRUE)

#리스트 예시
li=list(vec,ar,fac)


> li
[[1]]
[1] 1 2 3

[[2]]
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12

[[3]]
[1] bad   great good  good 
Levels: bad < good < great

 

4. 반복문, 조건문

컴퓨터는 반복 계산에 강합니다. 반복계산을 편하게 시키기 위해 만들어진 기능이 '반복문' 입니다. 반복문에는 while 문과 for문이 있습니다. while 문의 형태는 아래와 같습니다.

while(조건) { 명령 }

괄호 안의 조건이 만족하는 동안 중괄호 안의 명령을 계속 수행하라는 뜻입니다. 1부터 10까지 더하는 코드를 while 문을 이용하여 짜보면 아래와 같습니다. 

i=1
num=0

while(i<11)
{
  num=num+i
  i=1+i
}


for 문은 지정된 백터 안에 있는 원소를 하나씩 변수에 대입하며 실행합니다. 벡터에 저장된 이름을 하나씩 출력하는 예시는 아래와 같습니다. 

name=c("KYS","OJH","SSH","KSL")

for (i in name){
  print(i)
}


조건문인 if 문은 특정 조건을 만족할 경우에만 문장을 실행시킵니다. elseif 로 조건을 두개 이상 설정할 수도 있습니다. 기본적인 형태는 아래와 같습니다. 

if(조건) {명령문}
elseif(조건) {명령문}
else{명령문}


5. 함수

반복적으로 사용하는 코드가 있다고 합니다. 예를들어 벡터 원소의 합을 구하는 코드가 있다고 합시다. 

v1=c(1,2,3,4,5)
sum=0

for (i in 1:length(v1))
{
  sum=sum+v1[i]
}


매번 코드를 정의해서 쓰기 귀찮았기 때문에 함수라는 기능을 만들었습니다. 아래와 같이 정의합니다. 

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

벡터 원소를 합하는 함수를 정의하면 아래와 같습니다. 

mysum=function(vector)
{
  sum=0
  
  for (i in 1:length(vector))
  {
    sum=sum+v1[i]
  }
  
  sum
}

 

6. 패키지

여러가지 함수들을 정의해서 사용하고 있었다고 합시다. 혼자 쓰기 아까워서 사람들에게 공유하고 싶어졌습니다. R에서는 함수들을 모아서 패키지를 만들 수 있습니다. 다양한 예제 데이터들도 패키지에 포함시킬 수 있습니다. 

R의 기초적인 내용은 여기까지입니다. 배운 내용을 한번 더 보면서 간단히 복습해봅시다. 

1. 자료형
2. 연산자
3. 자료구조
4. 반복문, 조건문
5. 함수
6. 패키지

- 우리가 사용하는 자료는 숫자형과 문자형입니다. 컴퓨터에는 논리형이라는 자료형도 있습니다. 
- 자료형 사이에 여러가지 연산이 가능합니다. 연산자는 산술, 비교, 논리연산자가 있습니다. 
- 자료를 더 편하게 다루기 위해 다양한 자료구조가 존재합니다. 데이터프레임이 가장 많이 사용되는데 엑셀시트와 비슷합니다.
- 컴퓨터에게 반복작업을 시키기 위해 반복문이 있습니다. 
- 특정 조건에서만 작동하게 하는 조건문이 있습니다. 
- 긴 코드를 매번 정의할 필요 없이 함수를 만들어 놓고 가져다 쓰면 됩니다.
- 함수를 모아 패키지를 만들어 사람들과 공유할 수 있습니다. 

반응형

댓글