Domanda

Voglio esaminare RCPP per migliorare la velocità di parte del mio codice R senza dover ricorrere al codice C ++ disordinato (ho avuto un certo successo con quello, ma sembra un codice dall'Inferno).

Quindi, ho controllato la documentazione fornita con RCPP e anche il pacchetto dei documenti forniti a Sito di Dirk Eddelbuettel. Ho installato e guardato RCPPExamples, ma (almeno dalla sua documentazione) la maggior parte di questi si riferisce a RCPPClassic?. Oltre a ciò, ho fatto un po 'di googling ma ciò non ha portato a risposte a quelle che sembrano domande di base.

  • Eseguire gli indici nel lavoro RCPP a base zero o basati su uno
  • L'elenco fornisce entrambi operator() eoperator[], ma apparentemente nooperator[[]]. Non è chiaro a quali sono simili [] e [[]] in R.
  • C'è qualche supporto per i fattori in RCPP (non ci sono)?

Nota: in effetti ho trovato alcune risposte dal primo esempio in RCPP-Introduction.pdf, ma sembrava una fortuna.

Anche il mio stl è molto arrugginito, quindi se qualcuno può fornirmi un semplice esempio in cui ogni elemento di un elenco è (ad esempio) print-Ed con un ciclo in stile STL, sarebbe pulito.

Se qualcuno vuole chiamarmi idiota per non aver trovato queste informazioni: vai avanti e fai la tua giornata. Quindi fai il mio e indicami i documenti di cui ho bisogno :-)

Come suggerimenti a Mr. Eddelbuettel e altri autori di RCPP (mi aspetto che alcuni di loro leggano questo): le gerarchie di classe e simili, fornite da Doxygen, sono davvero puli RCPP), sono più interessato a un elenco di "questo metodo in questa classe lo fa come quella funzione in R" piuttosto che "puoi trovare la dichiarazione di questo operatore in questo file di intestazione". Dopotutto, capisco che uno degli obiettivi di RCPP è abbassare la soglia per l'utilizzo di C ++ in R? Nota: da quello che ho visto e compreso, apprezzo fortemente il codice effettivo di RCPP e ho il massimo rispetto per i suoi creatori. Se la mancanza di documentazione di base è semplicemente il risultato della "mancanza di risorse", sarei disposto a diventare una risorsa (ad esempio: lavorare sulla documentazione "di base" una volta superata io stesso).

È stato utile?

Soluzione

Non so del tutto dove iniziare a rispondere a questo, ma ecco un rapido tentativo:

  • Il pacchetto ha un sito Web. Il sito Web elenca la documentazione.

  • Il pacchetto ha otto (8) vignette. Sono chiaramente elencati. Sono principalmente pensati per essere letti come documentazione, altri introduttivi e altri più avanzati. Alcuni (come l'output di test unitari) sono più di un'interazione di controllo della qualità.

  • C'è una vignetta chiamata Introduzione RCPP. Ci riferiamo ripetutamente ad esso. Ti suggeriamo di leggerlo. Questo è ora anche un documento peer-reviewing e pubblicato che può prestarlo ancora più credibilità.

  • C'è una vignetta chiamata RCPP-FAQ. È prima domanda "Come posso iniziare?" che indica la suddetta introduzione RCPP.

  • C'è una mailing list dedicata al progetto, potresti effettivamente leggere l'archivio.

  • Abbiamo tenuto numerosi discorsi, sono disponibili diapositive come una registrazione di 90 minuti di un discorso di Google Tech.

  • Anche StackOverflow ha un tag per questo: [rcpp]. Potresti leggere i post precedenti.

  • Ci sono oltre due dozzine di pacchetti chiaramente elencati nella pagina Cran per RCPP come utilizzarlo. Potresti leggere il loro codice sorgente.

Detto questo, RCPP non può essere usato al posto di C ++ Quindi se non lo sai o lo capisci operator[[]] Non possiamo esistere in C ++, non possiamo aiutarti neanche. Questa non è una fata magica o un compilatore di codice R-to-C ++. Piuttosto, il suo obiettivo è rendere molto più semplice arrivare al codice C ++ da R e in alcuni casi riesce addirittura a migliorare la pratica C ++. In sostanza, cerca di essere "super-additivo": la combinazione R e C ++ dovrebbe essere più che in isolamento.

Infine, ti concedo che i pacchetti RCPPExamples - che tra l'altro coprono la vecchia e la nuova API - potrebbero usare più esempi. Tuttavia, i suoi sourec danno buoni suggerimenti di porting da vecchi ("classici") alla nuova e attuale API.

Ma c'è solo così tanta documentazione che possiamo scrivere noi stessi. Io stesso trovo i punti proiettile di cui sopra abbastanza esauriente. Tuttavia, potresti aver affinato la parte dell'elemento più debole della catena. Questa è sfortuna. Per favore, prova alcuni degli altri suggerimenti elencati qui.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top