From 316ffadfc40e5ad892b6e2fb884120f139baf80e Mon Sep 17 00:00:00 2001 From: qddyy Date: Tue, 17 Dec 2024 21:28:39 +0800 Subject: [PATCH] minor improvements --- R/AnsariBradley.R | 2 +- R/Friedman.R | 2 +- R/KolmogorovSmirnov.R | 2 +- R/Page.R | 2 +- R/RCBDOneWay.R | 3 +-- R/do_call.R | 2 +- R/pmt.R | 10 +++++----- inst/include/pmt/permutation.hpp | 19 ++++++++++--------- man/pmt.Rd | 10 +++++----- 9 files changed, 26 insertions(+), 26 deletions(-) diff --git a/R/AnsariBradley.R b/R/AnsariBradley.R index f0091b47..c6d244ad 100644 --- a/R/AnsariBradley.R +++ b/R/AnsariBradley.R @@ -89,4 +89,4 @@ AnsariBradley <- R6Class( private$.p_value <- get_p_continous(z, "norm", private$.side) } ) -) +) \ No newline at end of file diff --git a/R/Friedman.R b/R/Friedman.R index 3d82dccf..d5828d68 100644 --- a/R/Friedman.R +++ b/R/Friedman.R @@ -65,4 +65,4 @@ Friedman <- R6Class( ) } ) -) +) \ No newline at end of file diff --git a/R/KolmogorovSmirnov.R b/R/KolmogorovSmirnov.R index 3773fea2..f69a4417 100644 --- a/R/KolmogorovSmirnov.R +++ b/R/KolmogorovSmirnov.R @@ -48,4 +48,4 @@ KolmogorovSmirnov <- R6Class( private$.side <- "r" } ) -) +) \ No newline at end of file diff --git a/R/Page.R b/R/Page.R index dcf77f9b..ccde4526 100644 --- a/R/Page.R +++ b/R/Page.R @@ -64,4 +64,4 @@ Page <- R6Class( private$.p_value <- get_p_continous(z, "norm", private$.side) } ) -) +) \ No newline at end of file diff --git a/R/RCBDOneWay.R b/R/RCBDOneWay.R index 882897ca..d2edc8ae 100644 --- a/R/RCBDOneWay.R +++ b/R/RCBDOneWay.R @@ -69,5 +69,4 @@ RCBDOneWay <- R6Class( ) } ) -) - +) \ No newline at end of file diff --git a/R/do_call.R b/R/do_call.R index b0fc51c2..8b671fcd 100644 --- a/R/do_call.R +++ b/R/do_call.R @@ -27,4 +27,4 @@ do_call <- function(func, default = list(), fixed = list(), ...) { # All arguments will be evaluated within the `args` environment. # https://stackoverflow.com/a/25371509/23137996 eval(as.call(c(func, lapply(`names<-`(...args, ...args), as.name))), args) -} +} \ No newline at end of file diff --git a/R/pmt.R b/R/pmt.R index 7e18e0ca..7cdda23d 100644 --- a/R/pmt.R +++ b/R/pmt.R @@ -164,8 +164,8 @@ pmts <- function( #' rcpp <- define_pmt( #' inherit = "twosample", n_permu = 1e5, #' statistic = "[](const auto& x, const auto& y) { -#' auto m = x.size(); -#' auto n = y.size(); +#' auto m = x.length(); +#' auto n = y.length(); #' return [=](const auto& x, const auto& y) { #' return sum(x) / m - sum(y) / n; #' }; @@ -176,9 +176,9 @@ pmts <- function( #' # rcpp <- define_pmt( #' # inherit = "twosample", n_permu = 1e5, #' # statistic = "[](const NumericVector& x, const NumericVector& y) { -#' # R_xlen_t m = x.size(); -#' # R_xlen_t n = y.size(); -#' # return [=](const NumericVector& x, const NumericVector& y) -> double { +#' # R_xlen_t m = x.length(); +#' # R_xlen_t n = y.length(); +#' # return [m, n](const NumericVector& x, const NumericVector& y) -> double { #' # return sum(x) / m - sum(y) / n; #' # }; #' # }" diff --git a/inst/include/pmt/permutation.hpp b/inst/include/pmt/permutation.hpp index ba2df099..75b3c353 100644 --- a/inst/include/pmt/permutation.hpp +++ b/inst/include/pmt/permutation.hpp @@ -3,6 +3,9 @@ #include #include +template +using diff_t = typename std::iterator_traits::difference_type; + template T rand_int(T n) { @@ -12,12 +15,10 @@ T rand_int(T n) template void random_shuffle(T first, T last) { - using diff_t = typename std::iterator_traits::difference_type; - - diff_t n = std::distance(first, last); + diff_t n = std::distance(first, last); - for (diff_t i = 0; i < n - 1; i++) { - diff_t j = i + rand_int(n - i); + for (diff_t i = 0; i < n - 1; i++) { + diff_t j = i + rand_int(n - i); std::iter_swap(first + i, first + j); } } @@ -33,7 +34,7 @@ double n_permutation(T first, T last) { double A = 1.0; - typename std::iterator_traits::difference_type rep = 0; + diff_t rep = 0; auto val = *first; for (auto it = first; it != last; it++) { @@ -50,19 +51,19 @@ double n_permutation(T first, T last) } template -auto random_shuffle(T& v) +auto random_shuffle(T&& v) { return random_shuffle(v.begin(), v.end()); } template -auto next_permutation(T& v) +auto next_permutation(T&& v) { return next_permutation(v.begin(), v.end()); } template -auto n_permutation(const T& v) +auto n_permutation(T&& v) { return n_permutation(v.begin(), v.end()); } \ No newline at end of file diff --git a/man/pmt.Rd b/man/pmt.Rd index 6da93ce8..538badfb 100644 --- a/man/pmt.Rd +++ b/man/pmt.Rd @@ -123,8 +123,8 @@ r <- define_pmt( rcpp <- define_pmt( inherit = "twosample", n_permu = 1e5, statistic = "[](const auto& x, const auto& y) { - auto m = x.size(); - auto n = y.size(); + auto m = x.length(); + auto n = y.length(); return [=](const auto& x, const auto& y) { return sum(x) / m - sum(y) / n; }; @@ -135,9 +135,9 @@ rcpp <- define_pmt( # rcpp <- define_pmt( # inherit = "twosample", n_permu = 1e5, # statistic = "[](const NumericVector& x, const NumericVector& y) { -# R_xlen_t m = x.size(); -# R_xlen_t n = y.size(); -# return [=](const NumericVector& x, const NumericVector& y) -> double { +# R_xlen_t m = x.length(); +# R_xlen_t n = y.length(); +# return [m, n](const NumericVector& x, const NumericVector& y) -> double { # return sum(x) / m - sum(y) / n; # }; # }"