R이란?
통계 분석 과정에서 수행되는 복잡한 계산/시각화 기법을 쉽게 사용할 수 있도록 설계된 소프트웨어.
통계 분석을 위한 언어라고 볼 수 있다.
다른 통계 프로그램으로 SAS, SPSS가 있으나 유료이고 최신 알고리즘 및 기술 반영이 느린 편 등으로, R이 확산되어 사용되고 있다.
R Studio
R 명령문을 활용하여 구현하게 해주는 IDE1
VS Code와 같은 프로그램.
다운로드
R은 이하 링크에서 다운 가능.
https://cloud.r-project.org/index.html
The Comprehensive R Archive Network
cloud.r-project.org
R 스튜디오는 이하 링크에서 다운 가능.
https://posit.co/download/rstudio-desktop
Downloads: RStudio Desktop
posit.co
R 데이터 구조
벡터
타입이 같은 여러 데이터를 하나의 행으로 저장하는 1차원 데이터 구조
벡터 데이터 내에 들어갈 수 있는 데이터는 숫자, 문자, 논리 연산자 등
하나의 값은 스칼라라고 한다.
R에서 명령어 C를 이용해 선언 가능.
- 문자형 타입 (Character): “a”, ”abc”
- 숫자형 타입 (Number): numeric(숫자형), integer(정수), double(실수)
- 논리형 타입 (Logical): True(1), False(0)
# 변수 할당 방법
x = c(1, 10, 20, 30)
y = c("사과", "복숭아", "바나나")
z = c(TRUE, FALSE, TRUE)
# 등호 '=' 대신 '<-'화살표를 사용할 수도 있다.
C() 형식으로 변수를 선언할 수 있는데 여러 개를 할당할 경우 리스트/배열 형식으로 할당된다고 생각했는데, 검색해보니 '백터' 형태로 할당된다고 한다. 잘 모르는 개념이라 더 배울 필요가 있어보인다.
# 콜론(:)을 활용하여 시작값과 끝값을 지정하여 벡터를 생성하기
x = c(1:10)
# 1~10 값이 할당됨
# 벡터끼리 결합해보기
x <- c(1, 10, 20, 30)
y <- c("사과", "복숭아", "바나나")
xy <- c(x,y)
# x 전부, y 전부 순으로 할당됨
벡터 개념 요약
- 한 벡터에 포함된 모든 원소는 반드시 같은 데이터 타입이어야 한다.
- 벡터는 위치로 인덱스된다. (A[3]은 A벡터의 3번째 원소)
인덱스 넘버가 0부터 시작이 아닌 게 특이하니까, 꼭 기억해두자.
NaN: Not a Number. 수식 계산 불가 상태라 값이 할당되지 않음.
NA: Not Available. 공간은 할당되어 있는데, 값이 할당되어있지 않음.
NULL: 아예 공간이 할당되어있지 않음.
행렬
2차원 구조를 가진 벡터
포함된 모든 원소는 반드시 같은 데이터 타입이어야 한다.
# 행렬 선언하는 법
mx = matrix(c(1:6), ncol=2)
# ncol을 사용하여 열(column)의 수를 정하거나 nrow를 사용하여 행(row)의 수를 정한다.
# matrix 안에 , byrow=T 조건으로 저장 방식을 열→행으로 바꾸기 가능

# 이미 있는 벡터를 행렬로 변환하는 방법
a1 = c(1:6)
dim(a1) = c(2,3) #행, 열 순
# 이미 있는 행렬에 벡터 결합하기
rbind(a2, r1) # 각 열 뒤에 추가됨
cbind(a2, c1) # 각 행 뒤에 추가됨
배열
3차원 이상의 구조를 갖는 벡터
행렬에서 차원 하나 늘어난 것이라고 봐도 될 듯
# 배열 선언하기
b1 = array( c(1:12) , dim = c(2, 3, 2) )
# dim 옵션으로 몇 차원인지 선언을 해야 함. 선언이 없을 시, 1차원.
리스트
데이터 타입, 데이터 구조에 상관없이 사용자가 원하는 모든 것을 저장 가능.
# 리스트 선언 예시
L = list()
L[[1]]=5
L[[2]]=c(1:6)
L[[3]]=matrix(c(1:6),nrow=2)
L[[4]]=array(c(1:12),dim=c(2,3,2))
리스트 개념 요약
- 리스트는 각각의 원소가 인덱스를 가진다. (L[[3]] 는 L 리스트의 3번째 원소)
- 리스트의 원소들은 이름을 가질 수 있다. (L[[”red”]]과 L$red는 둘 다 ‘red’라는 이름의 원소)
대괄호 이중 중첩 인덱스, 이름 지칭 방법을 기억해두자.
데이터 프레임
2차원 목록 데이터 구조
각 열이 서로 다른 데이터 타입을 가질 수 있다.
# 데이터 프레임 선언 예시
d1 = c(1:5)
d2 = c('red','yellow','blue','purple','pink')
df = data.frame(d1,d2) # 각 열에 d1, d2가 배치됨
인사이트
기본적으로 아는 언어와 비슷하긴 한데 논리형 타입(Logical) 굉장히 어색하다.. Boolean이 아니라고?
그리고 R Studio도 커서가 있는 줄만 실행이 되는 게 신기했다. 보통은 전체 실행 후 결과를 보여주는데, 각각의 벡터값도 출력해주고 해서 신기하다.
- 통합 개발 환경. GUI로 결합한 소프트웨어. [본문으로]