R은 오픈 소스 프로그램으로 통계, 데이터마이닝을 위한 언어이다.
- 윈도우, 맥, 리눅스 OS에서 사용 가능
- 객체 지향 언어이며 함수형 언어이다. 즉 통계 기능뿐 아니라 일반 프로그래밍 언어처럼 자동화하거나 새로운 함수를 생성하여 사용 가능하다.
- 객체 지향 언어는 필요한 부분을 프로그래밍으로 골라 추출하여 활용이 가능하다.
- 함수형 언어는 깔끔하고 단축된 코드, 매우 빠른 수행 속도, 디버깅 노력 감소, 병렬 프로그래밍 전환이 용이하다는 특징을 가진다.
메모리에 변수가 어떻게 되어있는 지와 타입이 무엇인지를 볼 수 있고 스크립트 관리와 도큐먼테이션이 편리하다.
- 스크립트용 프로그래밍으로 어렵지 않고 쉽게 자동화가 가능하다.
R 함수, 데이터 및 컴파일된 코드의 모임
- 패키지 자동설치: install.packages("패키지")
- 패키지 수동설치: install.packages("패키지", "패키지 위치")
source("파일명.R") pdf() # 그래픽 출력을 pdf 파일로 지정
- 사용자와 인터랙션이 필요하지 않은 방식으로, 매일 실행되어야 하는 프로그램에서 프로세스를 자동화할 때 유용하다.
- 배치파일 실행 명령: bacth.R 실행파일이 있는 위치에서 윈도우 창 "R CMD BATCH batch.R" 명령어 실행
print() # 출력 형식을 지정할 필요 없음. 한 번에 하나의 객체만 출력 cat() # 여러 항목을 묶어서 연결된 결과로 출력, 복합적 데이터 구조 (행렬, list 등) 출력 불가 <-, <<-, =, -> # 대입 연산자 ls() # 변수 목록 보기 rm() # 변수 삭제하기 c() # 벡터 생성하기
- 벡터 원소 중 하나라도 문자가 있으면 모든 원소의 자료형은 문자형태로 변환된다.
지역변수: 단순히 값을 대입하기만 하면 지역변수로 생성, 함수가 종료되면 지역변수는 삭제됨 조건부 실행문: if문 반복 실행문: for문, while문, repeat문 전역변수: <<- 사용하여 전역변수로 변경할 수 있지만 추천하지 않음 수열: 시작값 반복: rep() 함수는 숫자나 변수의 값들을 반복해서 생성 가능 문자열 붙이기: paste() 함수 문자열 추출: substr(문자열, 시작점, 끝점) 함수는 문자열의 특정 부분을 추출 가능 논리값: T는 True, F는 False
- 논리 연산자
=== : 같다. != : 같지 않다. <, <= : 작다, 작거나 같다. >, >= : 크다, 크거나 같다.
- 벡터의 원소 선택하기: V[n], n은 원소의 자릿수, 논리형 벡터, 벡터의 이름
- 벡터의 원소 제외하기: V[-n], n은 제외하고자 하는 원소의 자릿수
[, [[ : 인덱스 $ : 요소, 변수 뽑아내기 ^ : 지수 계산, ex) 5^2 = 25 -, + : 단항 마이너스, 플러스 : : 수열 생성 %/% : 나눗셈 결과의 몫 반환 %% : 나눗셈 결과의 나머지 반환 %*% : 행렬 곱 *, / : 곱하기, 나누기 ! : 논리 부적 !T = F & : 논리 "and" | : 논리 "or" ~ : 식 (formula) ->, ->> : 오른쪽 대입 = : 오른쪽을 왼쪽으로 대입 <-, <<- : 오른쪽을 왼쪽으로 대입 ? : 도움말
mean(변수) : 변수의 평균 산출 sum(변수) : 변수의 합계 산출 median(변수) : 변수의 중앙값 산출 log(변수) : 변수의 로그값 산출 sd(변수) : 변수의 표준편차 산출 var(변수) : 변수의 분산 산출 cov(변수1, 변수2) : 변수 간 공분산 산출 cor(변수1, 변수2) : 변수 간 상관계수 산출 length(변수) : 변수의 길이를 값으로 산출
- 공분산은 두 변수의 변화량이 얼마나 비슷한지를 나타내며, 공분산 값이 양수인 경우에는 두 변수가 같은 방향으로 움직이고, 음수인 경우에는 서로 다른 방향으로 움직입니다.
- 상관계수는 두 변수 사이의 관계 강도와 방향성을 나타내며, -1부터 1사이의 값을 가집니다. 상관계수가 1에 가까울수록 두 변수는 양의 상관관계를 가지며, 0에 가까울수록 두 변수는 서로 독립적입니다. 반대로, 상관계수가 -1에 가까울수록 두 변수는 음의 상관관계를 가집니다.
테이블로 된 데이터 파일 읽기 : read.table("파일이름", sep="구분자")
CSV 데이터 파일 읽기 : read.csv("파일이름", header=T)
CSV 데이터 파일로 출력 : write.csv(행렬 또는 데이터프레임, "파일이름", row.names=F)