[R] R 기초 문법

Jaehyeong Kim·2023년 5월 5일
0

변수(Variables)

변수는 데이터 값을 담는 상자입니다. =,<-,-> 세 가지 대입 연산자(assignment operator)를 활용하여 변수에 값을 할당할 수 있습니다.

R에서는 다른 프로그래밍 언어에는 없는 <-,-> 기호를 대입연산자로 쓸 수 있으며, 화살표 방향으로 값을 할당합니다. 아래 세가지 예시 중 두번째 형태를 가장 많이 사용합니다.

name1 = "Kim"        # 우변의 값을 좌변의 변수에 할당
name2 <- "Lee"        # 우변의 값을 좌변의 변수에 할당
"Park" -> name3        # 좌변의 값을 우변의 변수에 할당

이제 변수에 할당한 값을 변수를 입력하여 사용할 수 있습니다.

name1        # "Kim" 출력
name2        # "Lee" 출력
name3        # "Park" 출력

데이터 타입

R의 기본적인 데이터 타입은 다음과 같습니다.

  • 숫자 - (10.5, 55, 787)
  • 정수 - (1L, 55L, 100L, "L"을 뒤에 붙여서 앞의 숫자가 정수임을 표시합니다.)
  • 복소수 - (9 + 3i, "i"가 붙은 숫자가 허수부입니다.)
  • 문자(character/string) - ("k", "R is exciting", "FALSE", "11.5")
  • logical(boolean) - (TRUE or FALSE)

변수에 값을 할당했다면 class() 함수를 활용하여 데이터 타입을 확인할 수 있습니다.

# numeric
x <- 10.5
class(x)

# integer
x <- 1000L
class(x)

# complex
x <- 9i + 3
class(x)

# character/string
x <- "R is exciting"
class(x)

# logical/boolean
x <- TRUE
class(x)

데이터 구조

데이터 구조는 위에서 설명한 데이터들을 저장하는 방식 또는 형태를 의미하는 용어입니다. 벡터(vector), 행렬(matrix), 배열(array), 리스트(list), 데이터 프레임(data frame), 팩터(factor)가 있습니다.

다른 프로그래밍 언어들과 마찬가지로 R에서는 이러한 데이터 구조들을 조작하고 변환할 수 있는 다양한 함수와 연산자가 존재하며, 각 데이터 구조에 따라 인덱싱, 슬라이싱, 연산, 병합 등의 작업을 수행할 수 있습니다.

아래의 표에 데이터 구조의 간단한 특징을 설명하였으며, 자세한 내용은 다른 글에서 설명하도록 하겠습니다.

데이터 구조설명
벡터동일한 자료형의 원소들을 일렬로 저장한 집합. c() 함수로 생성
행렬행과 열을 가진 2차원 데이터 구조. 동일한 자료형의 원소들로 구성. matrix() 함수로 생성
배열행렬을 확장한 다차원 데이터 구조. array() 함수로 생성
리스트서로 다른 데이터 구조와 자료형의 원소들을 가질 수 있는 컨테이너. list() 함수로 생성
데이터 프레임테이블 형태의 데이터 구조. 각 열은 벡터로 구성. data.frame() 함수로 생성
팩터범주형 데이터를 나타내는 데이터 구조. 유한한 수의 고유한 값(레벨)으로 구성. factor() 함수로 생성

연산자

R 연산자(operator)는 다음과 같은 것들이 있습니다.

R operator설명
-,+,*,/사칙연산
%%Modulus(나머지연산)
%/%Integer division(정수나누기의 몫)
<작다(논리값)
>크다(논리값)
==같다(논리값)
>=크거나 같다(논리값)
<=작거나 같다(논리값)
!부정
^지수
&And, vectorized
&&And
\|Or, vectorized
\|\|Or
<-오른쪽값을 왼쪽으로 할당
=오른쪽값을 왼쪽으로 할당
<<-global assignment(함수 외부의 변수값 지정)

함수

입력값을 받아서 출력값을 반환하는 함수를 만들어서 필요할 때마다 사용하거나, R에 기본적으로 내장되어 있는 함수들을 사용할 수 있습니다.

직접 함수를 설정하기

직접 함수를 만들 때는, function()을 변수에 할당한 뒤 사용할 수 있습니다.

funtion()의 괄호안에 함수에서 사용할 매개변수(parameter)를 설정합니다. 매개변수는 함수내에서 사용될 변수를 의미하며, 함수를 만들 때 꼭 필요한 것은 아닙니다. 매개변수 뒤에 = 기호를 사용하여 기본값을 설정할 수 있습니다. 이러면 매개변수를 사용하기로 한 다음, 함수를 사용할 때 매개변수를 입력하지 않아도 오류가 발생하지 않습니다.

my_funtion <- function(매개변수1 = 기본값1, 매개변수2 = 기본값2 ) {
     print(매개변수1)
     print(매개변수2)
     결과 <- 매개변수1 + 매개변수2
     return(결과)
}
my_funtion(1,2)        # 1과 2를 콘솔창에 출력하고, 1+2를 한 결과로서 3을 반환합니다.

위 예제에서는 함수를 my_function 변수에 정의하고, 숫자 1과 2를 입력하여 3을 얻었습니다. 예제와 달리 함수 바깥의 변수를 함수 내부에 사용하는 것도 가능합니다.

# 전역 변수 선언
global_var <- 10

# 함수 정의
my_function <- function(x) {
  # 전역 변수 global_var를 사용하여 계산
  result <- x + global_var
  return(result)
}

# 함수 호출
my_function(5)
# 결과: 15

전역 변수를 함수내에서 사용할 때에 알아야할 것은, 함수내부에서 전역 변수에 다른 값을 할당할 수 있고, 이것을 함수의 출력값에 반영할 수 있지만, 전역 변수는 바뀌지 않는다는 것입니다. 예를 들어 위 예제에서 정의한 함수 my_function 내부에서 global_var 에 숫자 5를 새로 할당하는 코드를 삽입한다면, 마지막 줄의 my_function(5)는 10의 결과를 반환할 것입니다. 하지만 global_var의 값을 다시 확인하면 변함없이 10의 값이 할당되어 있음을 알 수 있습니다.

주요 내장 함수

R에는 사용자가 직접 모든 함수를 정의하지 않아도 간단한 통계 분석을 할 수 있도록 여러 내장 함수들(Built-in functions)을 포함하고 있습니다. 기초 연산, 데이터 전처리, 통계 분석, 그래프 그리기와 관련된 함수들이 있으며, 이에 대해서는 다른 글에서 다루도록 하겠습니다.

조건문

위에서 설명한 연산자들 중 TRUE 혹은 FALSE 와 같은 논리값을 반환하는 연산자들(==,!=,>,<,>=,<=)을 활용하여, 특정 조건을 만족할 때 실행되는 코드를 만들 수 있습니다. if 키워드 다음 조건을 넣어서 사용할 수 있고, else if, else 를 활용하여 if 조건을 만족하지 못했을 경우의 상황도 처리할 수 있습니다. 아래와 같은 형식으로 사용할 수 있습니다.

# 변수 선언
height <- 180
weight <- 200

# 비만도 계산
bmi <- weight / ((height/100)^2)

# 비만도 결과 출력
if (bmi >= 30) {
  print("고도 비만입니다.")
} else if (bmi >= 25) {
  print("과체중입니다.")
} else if (bmi >= 18.5) {
  print("정상체중입니다.")
} else {
  print("저체중입니다.")
}

반복문

for, while 반복문을 사용할 수 있습니다.

for 반복문 예시

# 1부터 10까지 출력
for (x in 1:10) {
  print(x)
}

# fruits에 할당된 list를 차례대로 출력
fruits <- list("apple", "banana", "cherry")

for (x in fruits) {
  print(x)
}

# dice의 각 원소들을 출력
dice <- c(1, 2, 3, 4, 5, 6)

for (x in dice) {
  print(x)
}

while 반복문 예시

# i가 6과 같아질 때까지 반복
i <- 1
while (i < 6) {
  print(i)
  i <- i + 1
}

패키지와 라이브러리

R에서는 다양한 패키지와 라이브러리를 제공하며, 이를 이용하여 데이터 분석 작업을 보다 쉽고 빠르게 수행할 수 있습니다. 데이터 시각화(ggplot2), 데이터 전처리 및 가공(dplyr, tidyr), 머신러닝(caret, tidymodels) 등 다양한 작업에 도움이 되는 패키지들이 있습니다.

0개의 댓글