Я проверил свой пакет (HistDAWass 1.0.3) в Windows + RStudio, и все было в порядке. Я получил сообщение от CRAN с этим сообщением:
> ### Name: WH_adaptive.kmeans
> ### Title: K-means of a dataset of histogram-valued data using adaptive
> ### Wasserstein distances
> ### Aliases: WH_adaptive.kmeans
>
> ### ** Examples
>
> results=WH_adaptive.kmeans(x = BLOOD,k = 2, rep = 10,simplify =
TRUE,qua = 10,
standardize = TRUE)
==27368== Conditional jump or move depends on uninitialised value(s)
==27368== at 0x4D6B2E: bcEval (svn/R-devel/src/main/eval.c:6517)
==27368== by 0x4E8777: Rf_eval (svn/R-devel/src/main/eval.c:688)
==27368== by 0x4EA336: R_execClosure (svn/R-devel/src/main/eval.c:1853)
==27368== by 0x4EB113: Rf_applyClosure (svn/R-devel/src/main/eval.c:1779)
==27368== by 0x4E8943: Rf_eval (svn/R-devel/src/main/eval.c:811)
==27368== by 0x4ED2E1: do_set (svn/R-devel/src/main/eval.c:2920)
==27368== by 0x4E8BC4: Rf_eval (svn/R-devel/src/main/eval.c:763)
==27368== by 0x518FAC: Rf_ReplIteration (svn/R-devel/src/main/main.c:264)
==27368== by 0x518FAC: Rf_ReplIteration (svn/R-devel/src/main/main.c:200)
==27368== by 0x5192E7: R_ReplConsole (svn/R-devel/src/main/main.c:314)
==27368== by 0x519374: run_Rmainloop (svn/R-devel/src/main/main.c:1113)
==27368== by 0x417717: main (svn/R-devel/src/main/Rmain.c:29)
==27368== Uninitialised value was created by a stack allocation
==27368== at 0x19529170: c_STEP_3_AFFECT_ADA_KMEANS(Rcpp::Matrix<14,
Rcpp::PreserveStorage>, Rcpp::Vector<19, Rcpp::PreserveStorage>,
Rcpp::Vector<19, Rcpp::PreserveStorage>, int, int, int)
(/tmp/HistDAWass.Rcheck/00_pkg_src/HistDAWass/src/Utility_fun.cpp:1089)
Я выделил здесь функцию, начиная со строки 1086
// [[Rcpp::export]]
List c_STEP_3_AFFECT_ADA_KMEANS(NumericMatrix lambdas,
List dIpro_m,
List dIpro_v, int ind, int k, int vars){
NumericMatrix DiToClu(ind,k);
int indiv,cluster,variable;
NumericVector IDX(ind);
double SSQ;
for (indiv=0;indiv<ind;indiv++){
for (cluster=0;cluster<k;cluster++){
for (variable=0;variable<vars;variable++){
DiToClu(indiv,cluster)=DiToClu(indiv,cluster)+
(lambdas((variable*2),cluster)*(as<NumericMatrix>(dIpro_m[cluster]))(indiv,variable))+
(lambdas((variable*2+1),cluster)*(as<NumericMatrix>(dIpro_v[cluster]))(indiv,variable));
}
}
IDX[indiv]=which_min(DiToClu(indiv,_))+1;
SSQ=SSQ+(min(DiToClu(indiv,_)));
}
List resu = List::create(Named("DiToClu") = DiToClu , _["IDX"] = IDX,_["SSQ"]=SSQ);
return resu;
}
Я разработал свой пакет с помощью Windows + Rstudio, я не очень хорошо знаком с такими инструментами, как valgrind. Так как я не могу go un Linux machine, как я могу решить эту проблему?