2010-07-25 20 views
5

başarıyla yeni Rcpp modülü kağıt talimatları izlenerekRcpp yeni bir modül nasıl bulunur?

("Rcpp modülleri Dirk Eddelbuettel Romain Francois C++ işlevler ve sınıflar maruz bırakılması" örnek) derlenmiş sonra

require(Rcpp) 
yada <- Module("yada") 

R şikayet hatalar hakkında:

Error in FUN("_rcpp_module_boot_yada"[[1L]], ...) : 
    no such symbol _rcpp_module_boot_yada in package .GlobalEnv 

Ben, ' '("Yada") Modülü' hala aynı hatayı' çağırmadan önce ' '("/ yada.dll için// yol") dyn.load'' koyarak çalıştı.

Rcpp's Module çevrimiçi hakkında çok az bilgi var. Sorunu çözmek için bilinen herhangi bir şey var mı? Bazı özel klasöre derlenmiş modül dll koymalı mıyım?

örnek kod:

const char* hello(std::string who){ 
    std::string result("hello ") ; 
    result += who ; 
    return result.c_str() ; 
} 

RCPP_MODULE(yada){ 
    using namespace Rcpp ; 
    function("hello", &hello) ; 
} 

cevap

2

harici kütüphaneye ("yada.dll") elde modülünü yüklemek için, Modülüne PAKETİ argüman sağlamalıdır() fonksiyonu:

yada <- Module("yada", PACKAGE = "yada") 
aşağıdaki gibi

komple örnek görünüyor (Linux altında test, ben aynı zamanda Windows altında benzer işe yarıyor):

C++:

#include <Rcpp.h> 

const char* hello(std::string who){ 
    std::string result("hello ") ; 
    result += who ; 
    return result.c_str() ; 
} 

RCPP_MODULE(yada){ 
    using namespace Rcpp ; 
    function("hello", &hello) ; 
} 

R:

require(Rcpp) 
dyn.load("yada.so") 
yada <- Module("yada", PACKAGE = "yada") 
yada$hello("world") 
+1

Sadece> Modül 'almak ("yada", "yada") paketinden "yada" adlı Başlatılmamış modül "laf" > is.loaded ("yada") [1] FALSE' – highBandWidth