--- a +++ b/partyMod/src/Classes.c @@ -0,0 +1,394 @@ + +/** + S4 classes for package `party' + *\file Classes.c + *\author $Author$ + *\date $Date$ +*/ + +#include "party.h" + +SEXP + PL2_expectationSym, + PL2_covarianceSym, + PL2_linearstatisticSym, + PL2_expcovinfSym, + PL2_expcovinfssSym, + PL2_sumweightsSym, + PL2_dimensionSym, + PL2_MPinvSym, + PL2_rankSym, + PL2_svdmemSym, + PL2_methodSym, + PL2_jobuSym, + PL2_jobvSym, + PL2_uSym, + PL2_vSym, + PL2_sSym, + PL2_pSym, + PL2_teststatSym, + PL2_pvalueSym, + PL2_tolSym, + PL2_maxptsSym, + PL2_absepsSym, + PL2_relepsSym, + PL2_minprobSym, + PL2_minsplitSym, + PL2_minbucketSym, + PL2_variablesSym, + PL2_transformationsSym, + PL2_is_nominalSym, + PL2_is_ordinalSym, + PL2_is_censoredSym, + PL2_orderingSym, + PL2_levelsSym, + PL2_scoresSym, + PL2_has_missingsSym, + PL2_whichNASym, + PL2_test_trafoSym, + PL2_predict_trafoSym, + PL2_nobsSym, + PL2_ninputsSym, + PL2_linexpcov2sampleSym, + PL2_weightsSym, + PL2_varmemorySym, + PL2_splitstatisticsSym, + PL2_savesplitstatsSym, + PL2_responsesSym, + PL2_inputsSym, + PL2_testtypeSym, + PL2_nresampleSym, + PL2_varctrlSym, + PL2_splitctrlSym, + PL2_gtctrlSym, + PL2_mincriterionSym, + PL2_maxsurrogateSym, + PL2_randomsplitsSym, + PL2_mtrySym, + PL2_dontuseSym, + PL2_dontusetmpSym, + PL2_stumpSym, + PL2_maxdepthSym, + PL2_tgctrlSym, + PL2_ntreeSym, + PL2_replaceSym, + PL2_fractionSym, + PL2_traceSym, + PL2_dropcriterionSym, + PL2_compressSym, + PL2_expandSym, + PL2_varOnceSym; + +SEXP party_init(void) { + PL2_expectationSym = install("expectation"); + PL2_covarianceSym = install("covariance"); + PL2_linearstatisticSym = install("linearstatistic"); + PL2_expcovinfSym = install("expcovinf"); + PL2_expcovinfssSym = install("expcovinfss"); + PL2_sumweightsSym = install("sumweights"); + PL2_dimensionSym = install("dimension"); + PL2_MPinvSym = install("MPinv"); + PL2_rankSym = install("rank"); + PL2_svdmemSym = install("svdmem"); + PL2_methodSym = install("method"); + PL2_jobuSym = install("jobu"); + PL2_jobvSym = install("jobv"); + PL2_uSym = install("u"); + PL2_vSym = install("v"); + PL2_sSym = install("s"); + PL2_pSym = install("p"); + PL2_teststatSym = install("teststat"); + PL2_pvalueSym = install("pvalue"); + PL2_tolSym = install("tol"); + PL2_maxptsSym = install("maxpts"); + PL2_absepsSym = install("abseps"); + PL2_relepsSym = install("releps"); + PL2_minsplitSym = install("minsplit"); + PL2_minprobSym = install("minprob"); + PL2_minbucketSym = install("minbucket"); + PL2_variablesSym = install("variables"); + PL2_transformationsSym = install("transformations"); + PL2_is_nominalSym = install("is_nominal"); + PL2_is_ordinalSym = install("is_ordinal"); + PL2_is_censoredSym = install("is_censored"); + PL2_orderingSym = install("ordering"); + PL2_levelsSym = install("levels"); + PL2_scoresSym = install("scores"); + PL2_has_missingsSym = install("has_missings"); + PL2_whichNASym = install("whichNA"); + PL2_test_trafoSym = install("test_trafo"); + PL2_predict_trafoSym = install("predict_trafo"); + PL2_nobsSym = install("nobs"); + PL2_ninputsSym = install("ninputs"); + PL2_linexpcov2sampleSym = install("linexpcov2sample"); + PL2_weightsSym = install("weights"); + PL2_varmemorySym = install("varmemory"); + PL2_splitstatisticsSym = install("splitstatistics"); + PL2_savesplitstatsSym = install("savesplitstats"); + PL2_responsesSym = install("responses"); + PL2_inputsSym = install("inputs"); + PL2_testtypeSym = install("testtype"); + PL2_nresampleSym = install("nresample"); + PL2_varctrlSym = install("varctrl"); + PL2_splitctrlSym = install("splitctrl"); + PL2_gtctrlSym = install("gtctrl"); + PL2_mincriterionSym = install("mincriterion"); + PL2_maxsurrogateSym = install("maxsurrogate"); + PL2_randomsplitsSym = install("randomsplits"); + PL2_mtrySym = install("mtry"); + PL2_dontuseSym = install("dontuse"); + PL2_dontusetmpSym = install("dontusetmp"); + PL2_stumpSym = install("stump"); + PL2_maxdepthSym = install("maxdepth"); + PL2_tgctrlSym = install("tgctrl"); + PL2_ntreeSym = install("ntree"), + PL2_replaceSym = install("replace"), + PL2_fractionSym = install("fraction"); + PL2_traceSym = install("trace"); + PL2_dropcriterionSym = install("dropcriterion"); + PL2_compressSym = install("compress"); + PL2_expandSym = install("expand"); + PL2_varOnceSym = install("varOnce"); + return(R_NilValue); +} + +/* accessor functions */ + +int get_dimension(SEXP object) { + return(INTEGER(GET_SLOT(object, PL2_dimensionSym))[0]); +} + +int get_teststat(SEXP object) { + return(INTEGER(GET_SLOT(object, PL2_teststatSym))[0]); +} + +int get_pvalue(SEXP object) { + return(INTEGER(GET_SLOT(object, PL2_pvalueSym))[0]); +} + +double get_tol(SEXP object) { + return(REAL(GET_SLOT(object, PL2_tolSym))[0]); +} + +int get_maxpts(SEXP object) { + return(INTEGER(GET_SLOT(object, PL2_maxptsSym))[0]); +} + +double get_abseps(SEXP object) { + return(REAL(GET_SLOT(object, PL2_absepsSym))[0]); +} + +double get_releps(SEXP object) { + return(REAL(GET_SLOT(object, PL2_relepsSym))[0]); +} + +double get_minsplit(SEXP object) { + return(REAL(GET_SLOT(object, PL2_minsplitSym))[0]); +} + +double get_minprob(SEXP object) { + return(REAL(GET_SLOT(object, PL2_minprobSym))[0]); +} + +double get_minbucket(SEXP object) { + return(REAL(GET_SLOT(object, PL2_minbucketSym))[0]); +} + +SEXP get_transformation(SEXP object, int variable) { + return(VECTOR_ELT( + GET_SLOT(object, PL2_transformationsSym), + variable - 1)); +} + +SEXP get_test_trafo(SEXP object) { + return(GET_SLOT(object, PL2_test_trafoSym)); +} + +SEXP get_predict_trafo(SEXP object) { + return(GET_SLOT(object, PL2_predict_trafoSym)); +} + + +SEXP get_variable(SEXP object, int variable) { + return(VECTOR_ELT( + GET_SLOT(object, PL2_variablesSym), + variable - 1)); +} + +int is_nominal(SEXP object, int variable) { + return(INTEGER(GET_SLOT(object, PL2_is_nominalSym))[variable - 1]); +} + +int is_ordinal(SEXP object, int variable) { + return(INTEGER(GET_SLOT(object, PL2_is_ordinalSym))[variable - 1]); +} + +int is_censored(SEXP object, int variable) { + return(INTEGER(GET_SLOT(object, PL2_is_censoredSym))[variable - 1]); +} + +int has_missings(SEXP object, int variable) { + return(INTEGER(GET_SLOT(object, PL2_has_missingsSym))[variable - 1]); +} + +SEXP get_ordering(SEXP object, int variable) { + if (!is_nominal(object, variable)) { + return(VECTOR_ELT( + GET_SLOT(object, PL2_orderingSym), + variable - 1)); + } else { + error("Variable %d is not ordered", variable); + return(R_NilValue); + } +} + +SEXP get_levels(SEXP object, int variable) { + if (is_nominal(object, variable) || + is_ordinal(object, variable)) { + return(VECTOR_ELT( + GET_SLOT(object, PL2_levelsSym), + variable - 1)); + } else { + error("Variable %d is not an (ordered) factor", variable); + return(R_NilValue); + } +} + +SEXP get_scores(SEXP object, int variable) { + if (is_ordinal(object, variable)) { + return(VECTOR_ELT( + GET_SLOT(object, PL2_scoresSym), + variable - 1)); + } else { + error("Variable %d is not an ordered factor", variable); + return(R_NilValue); + } +} + +SEXP get_missings(SEXP object, int variable) { + if (has_missings(object, variable)) { + return(VECTOR_ELT( + GET_SLOT(object, PL2_whichNASym), + variable - 1)); + } else { + error("Variable %d has no missing values", variable); + return(R_NilValue); + } +} + +SEXP get_varmemory(SEXP object, int variable) { + return(VECTOR_ELT(GET_SLOT(object, PL2_varmemorySym), + variable - 1)); +} + +int get_savesplitstats(SEXP object) { + return(INTEGER(GET_SLOT(object, PL2_savesplitstatsSym))[0]); +} + +SEXP get_splitstatistics(SEXP object) { + return(GET_SLOT(object, PL2_splitstatisticsSym)); +} + +int get_nobs(SEXP object) { + return(INTEGER(GET_SLOT(object, PL2_nobsSym))[0]); +} + +int get_ninputs(SEXP object) { + return(INTEGER(GET_SLOT(object, PL2_ninputsSym))[0]); +} + +SEXP get_weights(SEXP object) { + return(GET_SLOT(object, PL2_weightsSym)); +} + +int get_testtype(SEXP object) { + return(INTEGER(GET_SLOT(object, PL2_testtypeSym))[0]); +} + +int get_nresample(SEXP object) { + return(INTEGER(GET_SLOT(object, PL2_nresampleSym))[0]); +} + +SEXP get_varctrl(SEXP object) { + return(GET_SLOT(object, PL2_varctrlSym)); +} + +SEXP get_splitctrl(SEXP object) { + return(GET_SLOT(object, PL2_splitctrlSym)); +} + +SEXP get_gtctrl(SEXP object) { + return(GET_SLOT(object, PL2_gtctrlSym)); +} + +SEXP get_tgctrl(SEXP object) { + return(GET_SLOT(object, PL2_tgctrlSym)); +} + +double get_mincriterion(SEXP object) { + return(REAL(GET_SLOT(object, PL2_mincriterionSym))[0]); +} + +int get_maxsurrogate(SEXP object) { + return(INTEGER(GET_SLOT(object, PL2_maxsurrogateSym))[0]); +} + +int get_randomsplits(SEXP object) { + return(INTEGER(GET_SLOT(object, PL2_randomsplitsSym))[0]); +} + +SEXP get_mtry(SEXP object) { + return(GET_SLOT(object, PL2_mtrySym)); +} + +SEXP get_dontuse(SEXP object) { + return(GET_SLOT(object, PL2_dontuseSym)); +} + +SEXP get_dontusetmp(SEXP object) { + return(GET_SLOT(object, PL2_dontusetmpSym)); +} + +int get_stump(SEXP object) { + return(INTEGER(GET_SLOT(object, PL2_stumpSym))[0]); +} + +int get_only_use_variable_once(SEXP object) { + return(INTEGER(GET_SLOT(object, PL2_varOnceSym))[0]); +} + +int check_depth(SEXP object, int depth) { + int maxdepth; + maxdepth = INTEGER(GET_SLOT(object, PL2_maxdepthSym))[0]; + if (maxdepth == 0) return(1); + if (maxdepth < 1) error("maxdepth is less than one"); + return(depth <= maxdepth); +} + +int get_ntree(SEXP object) { + return(INTEGER(GET_SLOT(object, PL2_ntreeSym))[0]); +} + +int get_replace(SEXP object) { + return(INTEGER(GET_SLOT(object, PL2_replaceSym))[0]); +} + +double get_fraction(SEXP object) { + return(REAL(GET_SLOT(object, PL2_fractionSym))[0]); +} + +int get_trace(SEXP object) { + return(INTEGER(GET_SLOT(object, PL2_traceSym))[0]); +} + +int get_dropcriterion(SEXP object) { + return(INTEGER(GET_SLOT(object, PL2_dropcriterionSym))[0]); +} + +SEXP get_compress(SEXP object) { + return(GET_SLOT(object, PL2_compressSym)); +} + +SEXP get_expand(SEXP object) { + return(GET_SLOT(object, PL2_expandSym)); +}