File tree Expand file tree Collapse file tree 1 file changed +19
-1
lines changed
Expand file tree Collapse file tree 1 file changed +19
-1
lines changed Original file line number Diff line number Diff line change @@ -22,7 +22,25 @@ Rankings::Rankings(const Rcpp::List& input_timeseries, bool partial_rankings) :
2222 ranking_tp new_data;
2323 Rcpp::CharacterVector nm = a.names ();
2424 for (size_t i{}; i < nm.size (); i++) {
25- new_data[std::string (nm[i])] = RankingObs{uvec (a[i]), find_available_items (uvec (a[i])), find_available_rankings (uvec (a[i]))};
25+ // 1. Read as Rcpp vector to safely check for NA
26+ Rcpp::NumericVector r_vec = a[i];
27+
28+ // 2. Create a clean Armadillo vector, forcing NAs to 0
29+ arma::uvec clean_vec (r_vec.size ());
30+ for (int j = 0 ; j < r_vec.size (); ++j) {
31+ if (Rcpp::NumericVector::is_na (r_vec[j])) {
32+ clean_vec[j] = 0 ; // Explicitly mark as missing
33+ } else {
34+ clean_vec[j] = (unsigned int )r_vec[j];
35+ }
36+ }
37+
38+ // 3. Use the clean vector
39+ new_data[std::string (nm[i])] = RankingObs{
40+ clean_vec,
41+ find_available_items (clean_vec),
42+ find_available_rankings (clean_vec)
43+ };
2644 }
2745 timeseries.push_back (new_data);
2846 }
You can’t perform that action at this time.
0 commit comments