Ошибка Rcpp Нулевое значение, переданное как адрес символа - PullRequest
0 голосов
/ 04 декабря 2018

Я новичок в Rcpp.

Я создал функцию rcpp, которая принимает кадр данных с 2 столбцами и вектором в качестве входных данных и возвращает вектор.Мои данные как показано ниже:

set.seed(10)
min= sort(rnorm(1000,800,sd=0.1))
max= min+0.02
k=data.frame(min,max)
explist= sort(rnorm(100,800,sd=0.2))

Затем я вызываю cfilter.cpp

k$output <- cfilter(k,explist)

#include <Rcpp.h> 
using namespace Rcpp;
// [[Rcpp::export]]
CharacterVector cfilter(DataFrame k, NumericVector explist) {

  NumericVector col1 = k["min"];
  NumericVector col2 = k["max"];
  NumericVector exp = explist ;

  int n = col1.size();
  int j = 0;
  CharacterVector out(n);

  for (int i=0; i<n ; i++){
    out[i]=NA_STRING;

    while(exp[j]<= col2[i]){

        if( exp[j]>= col1[i] && exp[j]<= col2[i] ){
          out[i]="Y";
          break;
        }
        else if(exp[j]>col2[i]){

          break;
        }
        else {
          j++ ;
        }
    }

  }
 return out;
}

Он прекрасно работает в течение 16171 раза, когда я его назвал.И затем внезапно в цикле 16172 он просто останавливается с ошибкой:

> myfile$output<- cfilter(k,explist2)
Error in .Call(<pointer: (nil)>, k, explist) : 
  NULL value passed as symbol address

Я проверил k и explist для значений NA, но их нет, проблем с вводом нет.Я понятия не имею, как это исправить и что вызывает эту ошибку.

Заранее спасибо за любой ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...