R 제어문, 연산, 함수

 

  1. 특징

    1. 결측치를 잘 다뤄야한다는 점

    2. 벡터연산을 수행한다는 점

 

  1. 제어문

    1. if문

      1. if (조건=참) {수행문} else {수행문}

    2. for문

      1. for (조건) {수행문}

    3. while문

      1. while (조건=TRUE){수행문}

 

  1. NA 처리

    1. R의 많은 함수는 이 문제를 해결하기 위해 -> NA를 제거하는 함수를 개발

      1. ex) sum(c(1,2,3,NA),na.rm=T)

      2. caret: Classification and Regression Training

    2. na.omit

      1. NA가 있는 행을 누락시킴

    3. na.pass

      1. NA의 포함 여부를 상관하지 않고 지나치고 계산

    4. na.fail

      1. NA가 있으면 실패라는 에러 문장을 보여줌

 

  1. 함수 작성

    1. function_name <- function(입력값1, 입력값2,...) {수행문}

    2. 주의!!! -> 반환값 앞에 return을 붙여줘야함

    3. 함수는 인자의 위치를 사용해서 입력값을 넣던가  or 함수의 인자 이름을 지정해서 입력값을넣는 두가지 방법이 있다.

      1. function(1,2) or function(x=1,y=2)

    4. 함수를 작성할 때 간혹, function1 <- function(z,...)에서 보듯이 ...을 발견

      1. 다른 함수로 인자를 넘겨줄 때 사용

      2. ex) function1 <- function(z,...) { function2(...)}

    5. nested function

      1. 중첩함수: 함수 안에 함수를 정의하여 사용하는 것

 

  1. scope

    1. 코드에서 사용한 변수를 어디에서 사용 가능한지 정하는 것을 scope라고 한다.

    2. console에서 변수를 설정하면 어디에서나 사용 가능한 변수로 설정

    3. 함수 안에 변수가 설정되면 함수 내에서만 적용, 우선권 -> 함수

    4. 함수내부의 변수는 밖에 정의되어 있으면 사용가능하나 밖에서는 함수 안의 변수를 찾지 못한다.

      1. 중첩함수도 이와같은 규칙이 적용된다.

      2. 만약 중첩함수 내부의 함수의 변수뿐만 아니라 외부의 변수도 변형시키고 싶다면 <<-를 사용

    5. nested function에서도 내부함수에서 변수가 없다면 외부함수에서 찾는다. 하지만 그것도 없다면 전역변수를 찾는다.

 

  1. 벡터연산

    1. 벡터연산을 기본으로 한다.

    2. x <- c(1,2,3,4,5)

      1. ex) x+x, x==x, etc.

      2. ifelse와같은 함수도 가능 -> ifelse(x%%2==0,’even’,’odd’)

      3. ifelse(조건, 참일 때 수행, 거짓일 때 수행)

    3. data.frame을 다룰때 벡터로 행을 선택가능

      1. x <- data.frame(a =1:3, b=3:6)

      2. ex) x[x$a%%2==0,] -> a행을 2로 나눴을 때 0인 경우와 모든 열 indexing 

 

  1. 객체

    1. R은 모든 데이터들이 객체이다. 

      1. 객체는 불변 -> 데이터 수정이 불가

    2. 예를들면, 데이터프레임의 구조를 바꾸는 함수에 데이터프레임을 넣어도 하나의 객체로 인식된 데이터프레임이 바뀌지 않고 함수 안에서 복사본을 사용한다. 만약 복사본이 아닌 직접 객체를 사용하고 싶을 때는 return을 사용해야한다.

      1. 문제점: 매번 복사하면 많은 메모리 사용

      2. 해결:  copy on write기법을 사용: 복사해야할 순간이 오면 복사함

 

 

 

'R > 기초' 카테고리의 다른 글

R 새로운 종류의 Plot  (0) 2019.08.13
R 데이터 plot 함수  (0) 2019.08.13
R 데이터 조작 II  (0) 2019.08.13
R 데이터 조작 I  (0) 2019.08.12
R에서 사용하는 변수  (0) 2019.08.12

-----------------------------------------------------------------------

내 첫 블로그 게시글! 

천문학과를 졸업하여 현재는 의료데이터를 만지면서 놀고있지만

나에게도 남들에게도 조금은 도움이 되는 일을 해보고자

데이터사이언스 관련글을 블로그로 남기기로 했다!

사실 나도 잘 모른다! 하면서 배우는거일 것이니,,

----------------------------------------------------------------------- 

#출처: r을 이용한 데이터분석 실무, 지은이: 서민구

 

 

R 변수



  1. 변수를 다룰 때 큰 틀의 특징

    1. 1부터 counting

    2. 언제나 위에서 아래로 row가 기준

      1. 행렬 내의 순서를 제외 (위에서 아래로 -> 열 기준)

    3. 각함수의 사용법은 ‘?함수’를 통해 search

    4. 데이터 프레임 형식의 dimension이 1이 되면 자동으로 벡터형으로 변환, 떨굼

      1. 이를 방지하려면 drop= FALSE로 지정

 

  1. 변수

    1. 되도록 ‘=’보다 ‘<-’를 권장, 에러가 나기 때문에

    2. 주로 벡터형이 기본

  2. 기본 함수

    1. dim(): dimension

    2. str(): data type

    3. class(): class type

    4. head(): 6 lines of the date from the first line

    5. rm(list=ls()): 저장된 변수 제거

 

  1. factor

    1. 범주형 변수를 위한 데이터타입

      1. ordered=TRUE  -> 순서가 있는 범주형으로 인식

      2. ex) sex <- factor(c(‘a’,’b’),ordered = TRUE)

 

  1. vector

    1. r에서 데이터의 기본형, 중첩이 불가능 -> 이 때, list를 사용

    2. seq(start,end,by)

      1. vector의 이름 붙여주는 함수: names(vector)

      2. seq_len(N): 1~N까지 숫자형 벡터 반환

      3. seq_along(vector): vector길이만큼의 1~길이까지의 숫자형 벡터 반환

    3. rep(start:end,repeat number)

      1. ex) rep(1:3,2) -> c(1,2,3,1,2,3)

    4. rep(start:end,each=N)

      1. 각각 N회 반복됨

      2. ex) rep(1:2, each=3) -> c(1,1,1,2,2,2)

    5. indexing: 벡터의 요소에 접근하기

      1. 숫자접근/벡터/이름 접근 가능

        1. ex) x[1]= 1

        2. x[-1]: 첫번째 요소를 제외하고 반환

        3. python과 다름 ‘-’기호는 제외를 의미

        4. ex) x[1:3]

        5. ex) x[c(1,2,3)]

        6. ex) x[Sepal.Length]

    6. vector 길이

      1. length(), NROW(): 벡터의 길이

      2. nrow(): 행렬에서만만 가능 (길이)

    7. vector 연산

      1. %in%: 벡터안에 그 값이 있나 확인

      2. 차집합: setdiff(c(1,2,3),c(1,3)) -> c(2)

      3. 합집합: union(c(1,2,3),c(4)) -> c(1,2,3,4)

      4. 교집합: intersect(c(1,2,3),c(2,3)) -> c(2,3)

      5. 집합간 비교: setequal(c(1,2,3),c(1,2,3,4)) -> TRUE

 

  1. list: N차원 벡터

    1. 다른 언어에서 흔히보는 dictionary에 해당, (키,값)을 담는 associated array(연관배열)이다.

    2. ex) x <- list(name=’foo’,height=c(50,30,50))

    3. x[[1]] -> ‘foo’

    4. x[1] -> name

 

  1. matrix

    1. 모든 요소가 숫자일때만 사용가능함

    2. ex) matrix(1:9,nrow=3)

      1. 첫번째 자리는 vector형식이면 다 들어가도된다.

      2. 이럴 때, column기준으로 숫자가 채워지는데 row를 기준으로 하고 싶다면 byrow=TRUE로 켜주면 된다. 

      3. ex) matrix(1:9,nrow=3,byrow=TRUE)

    3. matrix의 행과 열에 이름 부여

      1. matrix(1:9,nrow=3,dimnames=list(c(‘row1’,’row2’,’row3’),c(‘col1’,’col2’,’col3’))

    4. indexing

      1. 숫자와 행렬로 indexing할때는 row나 column 둘 중 하나만 사용해도 되고 둘 다 사용해도 됨, 하지만 name으로 indexing하는 경우 둘 다 채워줘야 함

    5. 연산

      1. 곱셈 *, 나눗셈 /, 덧셈 +, 뺄셈 -

      2. 행렬끼리의 곱셈 %*%

      3. 역행렬 solve(matrix)

      4. 대각행렬:t() 

      5. 행렬차원: ncol(), nrow()

 

  1. array(배열)

    1. N차원 행렬

      1. ex) array(1:12,dim=c(2,2,3))

    2. 차원을 알고 싶을 때: dim(vector,matrix,array)

 

  1. data frame 

    1. 가장 중요한 자료형, 행렬과 마찬지의 모습이지만 관측치와 범주등을 표현하기에 특화되어 있음

    2. a <- data.frame(x=c(1,2,3,4),y=c(2,3,4,5)) 기본 표현법

    3. data.frame에 열을 추가 하고 싶을 때 -> a$z = 1:4

    4. 데이터 차원이 1차원으로 변경되어 자동으로 벡터 변환이 되는 것이 싫을 때

      1. drop= FALSE 사용

      2. ex) a[1,,drop=FALSE]

    5. 데이터 형을 보고 싶을 때 -> str(data frame name)

    6. 일부분만 살펴보기 위해 -> head(data frame name)

    7. 칼럼명이 있는지 찾아보기

      1. 칼럼명 b,c가있는지 찾아보기: a[,names(a) %in% c(‘b’,’c’)

 

  1. 데이터 타입 판별 및 변환

    1. 판별 -> class(),is.numeric(), is.matrix()

    2. 변환 -> matrix, list를 data.frame으로 변환할때는, data.frame안에 넣으면 됨

      1. ex) data.frame(matrix(c(1,2,3),ncol=3))

변환 as함수 -> as.numeric, as.factor, as.data.frame, as.matrix

'R > 기초' 카테고리의 다른 글

R 새로운 종류의 Plot  (0) 2019.08.13
R 데이터 plot 함수  (0) 2019.08.13
R 데이터 조작 II  (0) 2019.08.13
R 데이터 조작 I  (0) 2019.08.12
R에서 사용하는 제어문, 함수, 그에따른 연산  (0) 2019.08.12

+ Recent posts