diff --git a/src/Data.cpp b/src/Data.cpp index 1c5595140..b1167ef0b 100644 --- a/src/Data.cpp +++ b/src/Data.cpp @@ -22,7 +22,7 @@ namespace ranger { Data::Data() : num_rows(0), num_rows_rounded(0), num_cols(0), snp_data(0), num_cols_no_snp(0), externalData(true), index_data(0), max_num_unique_values( - 0) { + 0), order_snps(false) { } Data::~Data() { @@ -264,6 +264,8 @@ void Data::orderSnpLevels(std::string dependent_variable_name, bool corrected_im // Save order snp_order[i] = order(means, false); } + + order_snps = true; } } // namespace ranger diff --git a/src/Data.h b/src/Data.h index 355b7d23a..9668e607b 100644 --- a/src/Data.h +++ b/src/Data.h @@ -73,16 +73,13 @@ class Data { } // Order SNPs - if (snp_order.empty()) { - return result; - } else { + if (order_snps) { if (col_permuted >= num_cols) { - return snp_order[col_permuted + no_split_variables.size() - 2 * num_cols_no_snp][result]; + result = snp_order[col_permuted + no_split_variables.size() - 2 * num_cols_no_snp][result]; } else { - return snp_order[col - num_cols_no_snp][result]; + result = snp_order[col - num_cols_no_snp][result]; } } - return result; } @@ -200,6 +197,7 @@ class Data { void setSnpOrder(std::vector>& snp_order) { this->snp_order = snp_order; + order_snps = true; } protected: @@ -228,6 +226,7 @@ class Data { // Order of 0/1/2 for ordered splitting std::vector> snp_order; + bool order_snps; }; } // namespace ranger