R의 가장 기본 자료구조는 벡터다.
-
숫자 1개 : 행이 1개인 벡터 (스칼라)
-
1:10 수열, c() 로 생성하는 것과 같은 열벡터 만든다.
-
c(1,2,3) column 벡터(열벡터) 생성하라는 명령이다.
벡터의 종류
-
numeric 벡터 (integer(정수) or double(실수))
-
문자열 벡터 (문자열로만 구성된 벡터)
-
논리형 벡터 (BOOLEAN 논리 연산자로만 구성된 벡터)
TRUE 또는 FALSE 로 구성되며, 대문자로 따옴표 없이 입력해야 한다.
각 벡터에는 반드시 한 가지 자료형만 들어갈 수 있다.
만약 다른 자료형 여러 개가 벡터에 들어 갈 경우, Character > numeric > bollean 순의 우열을 가지고 한 개 자료형으로 통일한다.
논리형 벡터는 사칙연산 가능하다(TRUE=1, FALSE=0)
이외에도
- 복소수형(complex)
- 원시형(raw)
벡터인지 아닌지 진단하는 법
is.vector(c)
벡터 길이
length(c)
특정 자료형 벡터로 변환
as.vector(y, mode='numeric')# 실수형 벡터로 변환
벡터의 자료형 확인하는 방법
- mode()
- typeof()
typeof() 가 좀 더 세세하게 알려준다.
mode() 는 typeof()보다 상위의 범주를 알려준다.
R 산술연산자
- ^ 또는 ** : 거듭제곱
- %% : 나눗셈 나머지
- %/% : 나눗셈 몫
R 논리연산자
- !x : x가 아님
- isTRUE(x) : x가 참인지 진단
R 기타 연산자
-
$ @ : 특정 구성요소(component) 또는 위치(slot) 값 추출
-
[ [[ : 색인 (indexing)
R에서 인덱스 넘버는 0이 아니라 1부터 시작한다.
a = c(1,2,3)
a[1]
result : 1
- %in% : a%in%b 이런 식으로 쓴다. 벡터 a 원소가 벡터 b에도 포함되었는지 확인한다.
객체
- 데이터를 담는 그릇. 파이썬의 변수와 같은 역할이다.
R 객체의 종류
- 벡터 : 가장 기본 객체다.
- 리스트 : 여러 개 벡터를 한번에 묶는 객체
리스트 안에 원소는 모두 벡터로 인식된다.
- 행렬 : 같은 자료형의 벡터들로만 구성될 수 있다.
벡터를 가지고 행렬을 만들 수 있다.
ncol, nrow argument 를 이용해서 행렬 사이즈를 조정할 수 있다.
- 데이터프레임 : 각 벡터들을 열로 쌓아서 만든 행렬
행렬은 같은 자료형 벡터들로만 구성될 수 있다.
하지만 데이터프레임은 다른 자료형 벡터들로도 구성할 수 있다.
- 배열 (array) : 좀 더 보충 필요함.
객체의 속성
- names() : 이름 부여
- dim() : 차원 부여
- class() : 클래스
속성 확인
- attributes()
행렬 객체
- matrix()
arguments
- 행 갯수 : nrow
- 열 갯수 : ncol
- 배열 순서 : byrow=(TRUE OR FALSE)
byrow=TRUE 이면 행렬 원소들을 행방향으로 배열한다.
FALSE 이면 열방향으로 배열한다.
배열 객체
-
텐서에 가까운듯 하다.
-
array() 함수로 생성한다.
array(1:30, dim=c(2,3,5))# 2*3 행렬을 5차원 배열
리스트 객체
- 리스트 안에는 벡터, 또 다른 리스트, 행렬 등을 넣을 수 있다.
- 1개 리스트 안에는 속성 다른 객체 여러개 들어갈 수 있다.
예) list(문자열벡터, 실수형벡터, 정수형벡터, 논리형 벡터)
- 핵심은, 파이썬 리스트 처럼 개별 값들을 묶는 게 아니라는 거다. R의 리스트는 벡터와 벡터(리스트)를 묶는 개념이다.
데이터프레임
-
열벡터들을 옆으로 쌓아서 만든 행렬
-
자료형이 다른 벡터 여럿을 넣을 수 있다.
-
열벡터로 넣는 벡터들은 반드시 차원이 같아야 한다.
factor (요인) 객체 유형
- 문자열 자료형을 카테고리 자료형으로 변환한다.
- factor(x) 명령 했을 때, 벡터 x의 각 값을 정수형 카테고리값으로 반환하는 게 기본이다. (0,1,2…)
그런데 원래 클래스 특징을 반영해서(예: 원래 문자열벡터) 정수 카테고리값을 문자열 카테고리값으로 출력해준다
- levels 로 각 카테고리 값 보여준다.
- 문자열로 만든 factor 자료형에 unlcass(factor) 함수 쓰면, class 특징을 없애고, 원래 할당된 상수 카테고리값을 보여준다.
NA, NaN, NULL
- NA : not available
- nan : not a number
NA $\supset$ NAN
NAN 은 NA의 일종이다.
- NULL : 없는 값
R 사용자 정의 함수
- function_name = function(argument1, argument2){함수 본문 내용}
function_name = function(x,y) {
x+y->z
return(z)
}
return 값 에 () 괄호 꼭 쳐줘야 한다.
return 값 안 적을 수도 있다. 이 경우 함수는 명령만 실행한다. 근데 실제 코드에서는 return 없이도 다른 객체에 담을 수 있었다.
function(x) 다음에 {} 나올 때 한 칸 띄워줘야 한다.
R 조건문과 반복문
R if else 조건문
if (조건) {
조건이 참일 때 실행 할 문장
} else {
조건이 거짓일 때 실행할 문장
}
a = 3
b = 2
if (a==1) {
print('a')
} else {
print('b')
}
R else if 문
if 문과 함께 사용할 수 있다. 만약 if문의 조건이 거짓일 경우에 어떤 새로운 조건 걸어줄 수 있다.
파이썬의 elif 문과 같은 역할한다.
a = 7
if (a == 3) {
print('a')
} else if (a == 4) {
print('b')
} else if (a == 7) {
print('c')
} else {
print('d')
}
R ifelse 조건문
ifelse (조건 검정(test), 조건이 참일 때 출력, 조건이 거짓일 때 출력)
a = 7
ifelse(a==7, '참', '거짓')
R 반복문 : for, while, repeat
- for, while, repeat
- 반복문 내 실행 내용 조정 : break, next
break - 반복문 종료
next - python 에서 continue에 해당한다. 해당 순서 스킵, 바로 다음순서로 진행
for 문
for (i in c(1,2,3,4,5)) {
print(i)
}
while 문
a = 7
while (a == 7) {
print(a)
}
repeat 문
repeat {
실행할 문장
}
{} 괄호 안의 실행문 무한반복한다.
repeat 문 {} 내에 if문으로 조건 걸고, break 하는 방식으로 쓴다. break 걸 때는 {}괄호 쓰지 않는다.
a = 0
repeat {
print('k')
a = a+1
if (a==4) break
}
R 패키지
R 패키지 또는 라이브러리 불러오는 방법
library(package_name)
# 따옴표가 없다
library(library_name)
유용한 R 내장함수들
- abs(x) : 스칼라 x의 절댓값
- sqrt(x) : 스칼라 x의 제곱근
- ceiling(x) : 올림
- floor(x) : 내림
- trunc(x) : 소수 첫째 자리에서 버림
- round(x, digits=) : 반올림
- log(x) : 자연로그
- Log10(x) : 상용로그
- exp(x) : 지수