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

+ Recent posts