Имам 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 от това, което направих в моя код?
Благодаря ви много за помощта.