Übergabe einer 'data.table' an C ++ Funktionen mit 'Rcpp' und / oder 'RcppArmadillo'

7

Gibt es eine Möglichkeit, ein data.table -Objekt an C ++ - Funktionen mit Rcpp und / oder RcppArmadillo zu übergeben, ohne manuell in data.table in ein data.frame zu transformieren? Im folgenden Beispiel schlagen test_rcpp(X2) und test_arma(X2) beide mit c++ exception (unknown reason) fehl.

R-Code

%Vor%

C ++ Funktionen

%Vor%     
user2503795 08.12.2012, 01:30
quelle

4 Antworten

11

Aufbauend auf anderen Antworten, hier ein Beispielcode:

%Vor%

So behandelt Matthew das data.table als data.frame (auch bekannt als Rcpp::DataFrame in Rcpp ).

%Vor%

Dies ignoriert vollständig die Interna von data.table .

    
Romain Francois 08.12.2012, 14:18
quelle
9

Versuchen Sie, data.table als DataFrame und nicht als NumericMatrix zu übergeben. Es ist sowieso ein data.frame mit der gleichen Struktur, also sollten Sie es nicht konvertieren müssen.

    
Matt Dowle 08.12.2012 14:04
quelle
3

Rcpp befindet sich auf nativen R-Typen, die als SEXP codiert sind. Dies beinhaltet zB data.frame oder matrix .

data.table ist nicht nativ, es ist ein Add-On. Jemand, der das will (Sie?), Muss einen Konverter schreiben oder anderen eine Finanzierung anbieten.

    
Dirk Eddelbuettel 08.12.2012 01:33
quelle
2

Als Referenz finde ich, dass es eine gute Sache ist, eine Liste von rcpp als data.table update via Listen zu erstellen.

Hier ist ein Dummy-Beispiel:

%Vor%     
statquant 21.01.2013 21:12
quelle

Tags und Links