Skip to content

Commit

Permalink
Added list_to_vector()
Browse files Browse the repository at this point in the history
Helps with #11.
  • Loading branch information
wleoncio committed Oct 23, 2024
1 parent 89c489e commit 3588f62
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 0 deletions.
4 changes: 4 additions & 0 deletions R/RcppExports.R
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ list_to_cube <- function(r_list) {
.Call(`_BayesSurvive_list_to_cube`, r_list)
}

list_to_vector <- function(r_list) {
.Call(`_BayesSurvive_list_to_vector`, r_list)
}

settingInterval_cpp <- function(y, delta_, s_, J_) {
.Call(`_BayesSurvive_settingInterval_cpp`, y, delta_, s_, J_)
}
Expand Down
11 changes: 11 additions & 0 deletions src/RcppExports.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,17 @@ BEGIN_RCPP
return rcpp_result_gen;
END_RCPP
}
// list_to_vector
arma::vec list_to_vector(Rcpp::List r_list);
RcppExport SEXP _BayesSurvive_list_to_vector(SEXP r_listSEXP) {
BEGIN_RCPP
Rcpp::RObject rcpp_result_gen;
Rcpp::RNGScope rcpp_rngScope_gen;
Rcpp::traits::input_parameter< Rcpp::List >::type r_list(r_listSEXP);
rcpp_result_gen = Rcpp::wrap(list_to_vector(r_list));
return rcpp_result_gen;
END_RCPP
}
// settingInterval_cpp
Rcpp::List settingInterval_cpp(const arma::vec y, const arma::vec delta_, const arma::vec s_, const unsigned int J_);
RcppExport SEXP _BayesSurvive_settingInterval_cpp(SEXP ySEXP, SEXP delta_SEXP, SEXP s_SEXP, SEXP J_SEXP) {
Expand Down
2 changes: 2 additions & 0 deletions src/init.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ extern SEXP _BayesSurvive_updateBH_cpp(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP)
extern SEXP _BayesSurvive_updateBH_list_cpp(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP);
extern SEXP _BayesSurvive_updateRP_genomic_cpp(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP);
extern SEXP _BayesSurvive_UpdateGamma_cpp(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP, SEXP);
extern SEXP _BayesSurvive_list_to_vector(SEXP);
extern SEXP _BayesSurvive_list_to_matrix(SEXP);
extern SEXP _BayesSurvive_list_to_cube (SEXP);
extern SEXP _BayesSurvive_UpdateRPlee11_cpp(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP);
Expand All @@ -27,6 +28,7 @@ static const R_CallMethodDef CallEntries[] = {
{"_BayesSurvive_updateBH_list_cpp", (DL_FUNC) &_BayesSurvive_updateBH_list_cpp, 7},
{"_BayesSurvive_updateRP_genomic_cpp", (DL_FUNC) &_BayesSurvive_updateRP_genomic_cpp, 12},
{"_BayesSurvive_UpdateGamma_cpp", (DL_FUNC) &_BayesSurvive_UpdateGamma_cpp, 7},
{"_BayesSurvive_list_to_vector", (DL_FUNC) &_BayesSurvive_list_to_vector, 1},
{"_BayesSurvive_list_to_matrix", (DL_FUNC) &_BayesSurvive_list_to_matrix, 1},
{"_BayesSurvive_list_to_cube", (DL_FUNC) &_BayesSurvive_list_to_cube, 1},
{"_BayesSurvive_UpdateRPlee11_cpp", (DL_FUNC) &_BayesSurvive_UpdateRPlee11_cpp, 6},
Expand Down
18 changes: 18 additions & 0 deletions src/misc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,21 @@ arma::cube list_to_cube(Rcpp::List r_list) {

return result;
}

//[[Rcpp::export]]
arma::vec list_to_vector(Rcpp::List r_list) {
// Converts a *list of scalars* into a vector

// Determine the number of elements (length of the list)
int n_elems = r_list.size();

// Initialize the vector
arma::vec result(n_elems);

// Fill the vector
for (int i = 0; i < n_elems; ++i) {
result(i) = Rcpp::as<double>(r_list[i]);
}

return result;
}
6 changes: 6 additions & 0 deletions tests/testthat/test-misc_cpp.R
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,9 @@ test_that("list_to_cube works", {
result_cube <- list_to_cube(r_list)
expect_equal(result_cube, array(1:18, dim = c(3, 2, 3)))
})

test_that("list_to_vector works", {
r_list <- as.list(1:5)
result_vector <- list_to_vector(r_list)
expect_equal(result_vector, matrix(1:5))
})

0 comments on commit 3588f62

Please sign in to comment.