Rcpp로 R 코드 최적화하기
Romain François
Consulting Datactive, ThinkR
Rcpp 벡터 클래스:
NumericVector: numeric 벡터 조작, 예) c(1,2,3)IntegerVector: integer, 예) 1:3LogicalVector: logical, 예) c(TRUE, FALSE)CharacterVector: 문자열, 예) c("a", "b", "c")추가:
List: 임의의 R 객체로 구성된 리스트주요 메서드:
x.size(): 벡터 x의 요소 개수 반환x[i]: 벡터 x의 i번째 요소 반환C++의 인덱싱은 0부터 시작합니다. 인덱스는 첫 번째 위치로부터의 오프셋입니다.
// first element of the vector
x[0]
// last element
x[x.size()-1]
R의 인덱싱은 1부터 시작합니다.
# first
x[1]
# last
x[length(x)]

// x comes from somewhere else (patience ...)
NumericVector x = ... ;
double value = x[0] ;
x[0] = 12.0 ;
// x comes from somewhere else (patience ...)
NumericVector x = ... ;
int n = x.size() ;
double value = x[n-1] ;
x[n-1] = 12.0 ;
// x comes from somewhere
NumericVector x = ... ;
int n = x.size() ;
for( int i=0; i<n; i++){
// manipulate x[i]
}
Rcpp로 R 코드 최적화하기