Wziąłem ten przykład z innego pytania. Buduję pakiet R z Rcpp. Mam funkcję podobną do fun1
(poniżej), którą chcę wstawić do własnego pliku .cpp
. Następnie chcę zadzwonić pod numer fun1
z innymi funkcjami (jak na przykład fun()
). Chcę fun1
w osobnym pliku, ponieważ zamierzam wywołać go z kilku funkcji Rcpp, które są w różnych plikach .cpp
. Czy są pewne oświadczenia i rzeczy, które muszę zrobić, aby funkcja fun1
była dostępna w .cpp
gdzie znajduje się fun()
? Dziękuję Ci.Wywołanie funkcji Rcpp z innej funkcji Rcpp podczas budowania pakietu R
library(inline)
library(Rcpp)
a = 1:10
cpp.fun = cxxfunction(signature(data1="numeric"),
plugin="Rcpp",
body="
int fun1(int a1)
{int b1 = a1;
b1 = b1*b1;
return(b1);
}
NumericVector fun_data = data1;
int n = data1.size();
for(i=0;i<n;i++){
fun_data[i] = fun1(fun_data[i]);
}
return(fun_data);
")
Więc dla mojego kodu będę mieć dwa .cpp
pliki:
#include <Rcpp.h>
using namespace Rcpp;
// I think I need something here to make fun1.cpp available?
// [[Rcpp::export]]
Rcpp::NumericVector fun(Rcpp::NumericVector data1)
{
NumericVector fun_data = data1;
int n = data1.size();
for(i=0;i<n;i++){
fun_data[i] = fun1(fun_data[i]);
}
return(fun_data);
}
i drugi .cpp
plik:
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
int fun1(int a1)
{int b1 = a1;
b1 = b1*b1;
return(b1);
}
To jest naprawdę elementarne użycie C++ i nie ma nic wspólnego z Rcpp. Naucz się używać wspólnego pliku nagłówkowego, który obejmie każda przyzwoita książka w C++ (lub nawet C). –