Rcpp sınıfları ve vektörler

Rcpp ile R Kodunu Optimize Etme

Romain François

Consulting Datactive, ThinkR

Bu kursta şimdiye kadar

  • C++ fonksiyonları yaz ✅
  • Döngüler yaz ✅
Rcpp ile R Kodunu Optimize Etme

Vektör sınıfları

Rcpp vektör sınıfları:

  • NumericVector: numeric vektörlerle çalışmak için, ör. c(1,2,3)
  • IntegerVector: integer için, ör. 1:3
  • LogicalVector: logical için, ör. c(TRUE, FALSE)
  • CharacterVector: stringler için, ör. c("a", "b", "c")

Ayrıca:

  • List: listeler için, yani rastgele R nesnelerinden oluşan vektörler
Rcpp ile R Kodunu Optimize Etme

Vektör sınıfları API'si

En önemli yöntemler:

  • x.size() vektör x'in eleman sayısını verir
  • x[i] vektör x'te i. konumdaki elemanı verir
Rcpp ile R Kodunu Optimize Etme

C++ indeksleme

C++'ta indeksleme 0'dan başlar. İndeks, ilk konuma olan ötelemeyi gösterir.

// first element of the vector
x[0]

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

R'de indeksleme 1'den başlar.

# first 
x[1]

# last
x[length(x)]
Rcpp ile R Kodunu Optimize Etme

Rcpp ile R Kodunu Optimize Etme

Bir vektörün ilk elemanı

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

double value = x[0] ;

x[0] = 12.0 ;
Rcpp ile R Kodunu Optimize Etme

Bir vektörün son elemanı

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

double value = x[n-1] ;

x[n-1] = 12.0 ;
Rcpp ile R Kodunu Optimize Etme

Bir vektör üzerinde döngü kurma

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

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

Rcpp ile R Kodunu Optimize Etme

Hadi pratik yapalım!

Rcpp ile R Kodunu Optimize Etme

Preparing Video For Download...