R 프로그래밍
[R] R 프로그래밍 기초
DayOff
2022. 4. 29. 15:21
분석환경의 이해
통계 패키지 R
- 통계 분석 과정에서 수행되는 복잡한 계산이나 시각화 기법을 쉽게 사용할 수 있도록 설계된 무료 소프트웨어
- 기본으로 제공되는 기능 외에도 사용자들이 직접 제작한 패키지를 이용하여 무수히 많은 기능들을 사용할 수 있도록 확장 가능
- 상용 소프트웨어나 출력물에 견주어 뒤쳐지지 않는 강력한 시각화 요소
R의 선택 기준
SAS | SPSS | R | |
프로그램 비용 | 유료, 고가 | 유료, 고가 | 오픈소스 |
설치 용량 | 대용량 | 대용량 | 적음 |
다양한 모듈지원 및 비용 | 별도 구매 | 별도 구매 | 오픈소스 |
최근 알고리즘 및 기술 반영 | 느림 | 다소 느림 | 매우 빠름 |
학습자료 입수의 편의성 | 유료 도서 위주 | 유료 도서 위주 | 공개 논문 및 자료 많음 |
질의를 위한 공개 커뮤니티 | NA | NA | 매우 활발 |
R의 역사
- 1993년 뉴질랜드 Ross Inaka와 Robert Gentleman에 의해 개발된 소프트웨어
- AT&T에서 개발한 통계 프로그래밍 언어인 S언어 기반
- S보다 한 단계 발전되었다는 의미에서 알파벳 S보다 앞선 R을 차용했다는 의미를 포함
- S로 작성된 대부분의 코드를 실행시킬 수 있었으며, UNIXㆍWindowsㆍLinuxㆍMac OS를 지원하며 발전
R의 특징
그래픽 처리
- 상용 소프트웨어에 버금가는 상당한 수준의 그래프와 그림을 그릴 수 있다.
- 사용자가 세부적인 부분까지 직접 지정하여 섬세한 작업을 수행할 수 있다.
- 고해상도 이미지를 생산하면서 처리 시간이 매우 빠르다.
- 보고서 작성이나 발표 자료 작성 시에도 유용하게 사용할 수 있다.
데이터 처리 및 계산능력
- 벡터, 행렬, 배열, 데이터 프레임, 리스트 등 다양한 형태의 데이터 구조를 지원한다.
- 복잡한 데이터 구조 내의 개별 데이터에 접근하는 절차가 간단하여 큰 데이터를 핸들링하기 간편하다.
패키지
- 사용자들이 스스로 개발하는 새로운 함수들을 패키지의 형태로 내려받아 사용할 수 있다.
- 이러한 확장성 덕분에 다른 통계 프로그램에 비해 최신 이론이나 기법을 사용해보기가 더 쉽다.
R 소개
- R은 오픈소스 프로그램으로 통계, 데이터마이닝을 위한 언어이다.
- 윈도우, 맥, 리눅스 OS에서 사용 가능하다.
- 객체 지향 언어이며 함수형 언어이다. 즉, 통계 기능뿐만 아니라 일반 프로그래밍 언어처럼 자동화하거나 새로운 함수를 생성하여 사용 가능
- 객체 지향 언어는 필요한 부분을 프로그래밍으로 골라 추출하여 활용이 가능하다.
- 함수형 언어는 깔끔하고 단축된 코드, 매우 빠른 수행 속도, 디버깅 노력 감소, 병렬 프로그래밍의 전환이 용이하다는 특징을 가진다.
R IDE 도구
1. R Studio
- 메모리에 변수가 어떻게 되어있는 지와 타입이 무엇인지를 볼 수 있고 스크립트 관리와 도큐먼테이션이 편리하다.
- 스크립트용 프로그래밍으로 어렵지 않고 쉽게 자동화가 가능하다.
2. Visual Studio Code
파이썬으로 프로그래밍을 할 때 사용했던 IDE로 나에겐 VSCode가 익숙하다. 하지만 R을 학습하는 단계에서는 R Studio를 사용하면서 학습 할 생각이다. 학습을 완료한 이후에는 익숙한 VSCode로 추가적인 학습을 이어나갈 생각이다.
R 프로그래밍 기초
(1) 패키지(Package)
- R 함수, 데이터 및 컴파일된 코드의 모임
- 패키지 자동설치: install.packages("패키지")
- 패키지 수동설치: install.packages("패키지명", "패키지 위치")
(2) 스크립트로 프로그래밍 된 파일 실행
- source("파일명.R")
- pdf( ): 그래픽 출력을 pdf 파일로 지정
(3) 배치모드
- 사용자와 인터랙션이 필요하지 않은 방식으로, 매일 실행되어야 하는 프로그램에서 프로세스를 자동화할 때 유용하다.
- 배치파일 실행 명령: batch.R 실행파일이 있는 위치에서 윈도우 창에 "R CMD BATCH batch.R" 명령어 실행
(4) R 명령어
print( ) | 출력 형식을 지정할 필요 없음. 한 번에 하나의 객체만 출력 |
cat( ) | 여러 항목을 묶어서 연결된 결과로 출력. 복합적 데이터 구조(행렬, list 등)를 출력 불가 |
" <-, <<-, =, ->" | 대입 연산자 |
ls( ) | 변수 목록보기 |
rm( ) | 변수 삭제하기 |
c( ) | 벡터 생성하기 |
- 벡터의 원소 중 하나라도 문자가 있으면 모든 원소의 자료형은 문자형태로 변환
지역변수 | 단순히 값을 대입하기만 하면 지역변수로 생성. 함수가 종료되면 지역변수는 삭제됨 |
조건부 실행문 | if문 |
반복 실행문 | for문, while문, repeat문 |
전역변수 | "<<-"를 사용하여 전역변수를 변경할 수 있지만 추천하지 않음 |
수열 | "시작값 |
반복 | rep( ) 함수는 숫자나 변수의 값들을 반복해서 생성 가능. |
문자열 붙이기 | paste( ) 함수 |
문자열 추출 | substr(문자열, 시작점, 끝점) 함수는 문자열의 특정 부분을 추출 가능 |
논리값 | T는 True, F는 False |
- 논리연산자
== | 같다 |
!= | 같지 않다 |
<, <= | 작다, 작거나 같다 |
>, >= | 크다, 크거나 같다 |
· 벡터의 원소 선택하기: V[n], n은 원소의 자릿수, 논리형 벡터, 벡터의 이름.
· 벡터의 원소 제외하기: V[-n], n은 제외하고자 하는 원소의 자릿수
(5) 벡터의 연산
[, [[ | 인덱스 |
$ | 요소, 변수 뽑아내기 |
^ | 지수 계산. 예) 5^2 = 25 |
-, + | 단항 마이너스, 플러스 부호 |
: | 수열 생성 |
%/% | 나눗셈 결과의 몫 반환 |
%% | 나눗셈 결과의 나머지 반환 |
%*% | 행렬 곱 |
*, / | 곱하기, 나누기 |
+, - | 더하기, 뻬기 |
! | 논리 부정. !T = F |
& | 논리 "and". |
| | 논리 "or". |
~ | 식(formula) |
->, ->> | 오른쪽 대입 |
= | 오른쪽을 왼쪽으로 대입 |
<-, <<- | 오른쪽을 왼쪽으로 대입 |
? | 도움말 |
(6) 기초통계 명령어
mean(변수) | 변수의 평균 산출 |
sum(변수) | 변수의 합계 산출 |
median(변수) | 변수의 중앙값 산출 |
log(변수) | 변수의 로그값 산출 |
sd(변수) | 변수의 표준편차 산출 |
var(변수) | 변수의 분산 산출 |
cov(변수1, 변수2) | 변수 간 공분산 산출 |
cor(변수1, 변수2) | 변수 간 상관계수 산출 |
length(변수) | 변수의 길이를 값으로 산출 |