Domanda

Sto cercando di ottenere una presa su C ++ / Rcpp come estensione di R per compiti computazionali pesanti. In ultima analisi, queste librerie C ++ dovrebbero essere integrati in un pacchetto, e per questo sto cercando un setup / combinazione di strumenti / IDE che avrei avuto bisogno di lavorare facilmente. So che molto è il gusto dipendente, ma comunque sarebbe bello sapere le mie opzioni prima di scegliere.

Quindi: quando si sviluppa pacchetti R con librerie C ++, che cosa è la messa a punto si lavora con

?
  • si usa lo stesso editor / IDE per R e C ++ e quale (o quali)?
  • sono lì strumenti aggiuntivi (a parte Rtools) che sono importanti per ottenere?
  • sono lì modifiche nel setup generale che sono importanti per conoscere o accelerare il processo considerevolmente?

Scusate se questa domanda è stato chiesto prima. Ho trovato un elenco di tutti gli editor per R, ma nulla di specificamente indirizzato verso lo sviluppo di pacchetti compreso il codice C ++. Eventuali suggerimenti o suggerimenti sono molto apprezzati.

Edit: la piattaforma è Windows, ma posso passare a Linux senza problemi (dual boot, unica cosa che mi impedisce di usare ubuntu è la mancanza di un driver decente per la mia vecchia carta / combinazione di schermo vecchio)

È stato utile?

Soluzione

statet se si desidera partecipare in noi nel mondo moderno:)

Altri suggerimenti

Sono ovviamente pienamente a favore di più Rcpp lavoro :)

Per quanto riguarda le vostre domande, e in ordine:

  • stesso editore (Emacs), che rende piacevole consistenza su entrambe le piattaforme uso io (per lo più Linux, occasionalmente di Windows); per la cronaca ho anche parlato a favore della IDE qtcreator che è abbastanza bello su Linux e Windows (ma non fa R).
  • no, in Linux tutto viene già pronto (e sì, su Windows si ha bisogno Rtools) ...
  • non proprio - probabilmente già conoscono linea che è buono per testare R frammenti / C ++ di codice.

Modifica: Quindi, in un certo senso, questo è davvero non è diverso dal normale R / C / C ++ / Fortran sviluppo. E in questo caso mi riferisco al solito R Sezione FAQ 6 che è interamente dedicato a R e Emacs :) Detto questo, l'impostazione Emacs per il lavoro C ++ non è evidente e ci sono una serie di domande e post qui. Non faccio uso di un particolare browser di classe, ma ci sono alcuni, così come si avvicina al completamento automatico dei tipi ecc.

Si vorrà un editor in grado di gestire più lingue, R, C +, forse Makefile, ecc Dal momento che si parla Rtools suona come siete su Windows. Vorrei suggerire Notepad ++ gestisce R, C ++, e un sacco di altre lingue. Inoltre è possibile comando personalizzato di installazione attraverso NppExec per creare il pacchetto più facilmente. Ho sviluppato alcuni pacchetti che fanno largo uso di C / C ++ utilizzando Notepad ++.

Ho appena scritto una sceneggiatura CMake per generare progetto Eclipse CDT per lo sviluppo di pacchetti Rcpp.

Inoltre, cmake potrebbe essere in grado di generare progetti CodeBlocks o KDevelop3, ma non ho controllato queste caratteristiche, ancora.

Ambiente

  • CMake> = 2.8.7
  • Eclipse> = 3.7
  • Eclipse CDT> = 1.4.2
  • R> = 2.15
  • Rcpp> = 0.10

Configurazione

  • Scarica FindLibR.cmake da github fornito da Rstudio

  • Genera pacchetto Rcpp, ad esempio

    library(Rcpp)
    Rcpp.package.skeleton("RcppPackage")
    
  • Mettere il seguente script (o scaricarlo dal Gist ), chiamato CMakeLists .txt , nella cartella generata come RcppPackage nell'esempio precedente.

    cmake_minimum_required(VERSION 2.8)
    project(RcppPackage)
    find_package(LibR)
    if(${LIBR_FOUND})
    else()
        message(FATAL_ERROR "No R...")
    endif()
    message(STATUS ${CMAKE_SOURCE_DIR})
    execute_process(
        COMMAND ${LIBR_EXECUTABLE} "--slave" "-e" "stopifnot(require('Rcpp'));cat(Rcpp:::Rcpp.system.file('include'))"
        OUTPUT_VARIABLE LIBRCPP_INCLUDE_DIRS
    ) 
    include_directories(BEFORE ${LIBR_INCLUDE_DIRS})
    message(STATUS ${LIBR_INCLUDE_DIRS})
    include_directories(BEFORE ${LIBRCPP_INCLUDE_DIRS})
    message(STATUS ${LIBRCPP_INCLUDE_DIRS})
    add_custom_target(RcppPackage ALL
        COMMAND find ${CMAKE_SOURCE_DIR} -name "*.o" -exec rm "{}" "\;"
        COMMAND find ${CMAKE_SOURCE_DIR} -name "*.so" -exec rm "{}" "\;"
        COMMAND ${LIBR_EXECUTABLE} "--slave" "-e" "\"stopifnot(require(roxygen2));roxygenize('${CMAKE_SOURCE_DIR}',roclets=c('rd','collate','namespace'))\""
        COMMAND ${LIBR_EXECUTABLE} CMD INSTALL "${CMAKE_SOURCE_DIR}")
    
  • Personalizza roxygenize e R CMD INSTALL in CMakeLists.txt

  • Genera progetto con CMake

    mkdir build # don't create subdirectory of RcppPackage
    cd build
    cmake -G "Eclipse CDT4 - Unix Makefiles" <path to RcppPackage> -DCMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT=TRUE
    
  • Apri Eclipse e progetto di importazione da build (See cmake-eclipse-cdt esempio). Dopo l'indicizzazione, fare molte funzioni che facilitano da Eclipse CDT come rintracciamento e completamento automatico.

  • È possibile costruire il progetto, che verrà convertito in R CMD INSTALL o nulla al CMakeLists.txt .

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