У меня есть код R с кучей определяемых пользователем функций R. Я пытаюсь заставить код работать быстрее, и, конечно же, лучший вариант - использовать Rcpp. В моем коде есть функции, которые вызывают друг друга. Следовательно, если я напишу некоторые функции на C ++, я смогу вызывать и запускать некоторые из моих функций R в моем коде на C ++. В простом примере рассмотрим приведенный ниже код на R:
mySum <- function(x, y){
return(2*x + 3*y)
}
x <<- 1
y <<- 1
Теперь рассмотрим код C ++, в котором я пытаюсь получить доступ к указанной выше функции:
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
int mySuminC(){
Environment myEnv = Environment::global_env();
Function mySum = myEnv["mySum"];
int x = myEnv["x"];
int y = myEnv["y"];
return wrap(mySum(Rcpp::Named("x", x), Rcpp::Named("y", y)));
}
Когда я отправляю файл в R с помощью встроенной функции sourceCpp (), я получаю сообщение об ошибке:
"invalid conversion from 'SEXPREC*' to int
Может ли кто-нибудь помочь мне в отладке кода? Насколько эффективен мой код? Можно ли резюмировать? Есть ли лучшая идея использовать функцию mySum, чем то, что я сделал в своем коде?
Большое спасибо за вашу помощь.