Rcpp 클래스와 벡터

Rcpp로 R 코드 최적화하기

Romain François

Consulting Datactive, ThinkR

이전 학습 내용

  • C++ 함수 작성 ✅
  • 반복문 작성 ✅
Rcpp로 R 코드 최적화하기

벡터 클래스

Rcpp 벡터 클래스:

  • NumericVector: numeric 벡터 조작, 예) c(1,2,3)
  • IntegerVector: integer, 예) 1:3
  • LogicalVector: logical, 예) c(TRUE, FALSE)
  • CharacterVector: 문자열, 예) c("a", "b", "c")

추가:

  • List: 임의의 R 객체로 구성된 리스트
Rcpp로 R 코드 최적화하기

벡터 클래스 API

주요 메서드:

  • x.size(): 벡터 x의 요소 개수 반환
  • x[i]: 벡터 xi번째 요소 반환
Rcpp로 R 코드 최적화하기

C++ 인덱싱

C++의 인덱싱은 0부터 시작합니다. 인덱스는 첫 번째 위치로부터의 오프셋입니다.

// first element of the vector
x[0]

// last element
x[x.size()-1]

R의 인덱싱은 1부터 시작합니다.

# first 
x[1]

# last
x[length(x)]
Rcpp로 R 코드 최적화하기

Rcpp로 R 코드 최적화하기

벡터의 첫 번째 요소

// x comes from somewhere else (patience ...)
NumericVector x = ... ; 

double value = x[0] ;

x[0] = 12.0 ;
Rcpp로 R 코드 최적화하기

벡터의 마지막 요소

// x comes from somewhere else (patience ...)
NumericVector x = ... ; 
int n = x.size() ;

double value = x[n-1] ;

x[n-1] = 12.0 ;
Rcpp로 R 코드 최적화하기

벡터 순회

// x comes from somewhere
NumericVector x = ... ; 
int n = x.size() ;

for( int i=0; i<n; i++){
    // manipulate x[i]
}

Rcpp로 R 코드 최적화하기

연습해 봅시다!

Rcpp로 R 코드 최적화하기

Preparing Video For Download...