Skip to content

Commit ebf5ea2

Browse files
committed
bug fix
1 parent db7b518 commit ebf5ea2

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

src/data.cpp

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff 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
}

0 commit comments

Comments
 (0)