der Wille zur Macht,

[R을 이용한 데이터분석] R 기초 syntaxes 복습 & 기록

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차원 배열

Screen Shot 2021-09-13 at 21 01 36


리스트 객체

  • 리스트 안에는 벡터, 또 다른 리스트, 행렬 등을 넣을 수 있다.
  • 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) : 지수