Look at the rpart vignette "User written split functions". The code allows you to add your own splitting method to the code (in R, no C required). This has proven to be very useful for trying out new ideas.

The second piece would be to do your own cross-validation. That is, turn off the built in cross-validation using the xval=0 option, then explicitly do the cross-validation yourself. Fit a new tree to some chosen subset of data, using your split rule of course, and then use predict() to get predicted values for the remaining observations. Again, this is all in R, and you can explicitly control your in or out of bag subsets.
The xpred.rpart function may be useful to automate some of the steps.

If you look up rpart on CRAN, you will see a link to the package source. If you were to read the C source code you will discover that 95% is boring bookkeeping of what observations are in what part(s) of the tree, sorting the data, tracking missing values, etc. If you ever do want to write your own code you are more than welcome to build off this --- I wouldn't want to write that part again.

Terry Therneau

On 11/12/2015 05:00 AM, r-help-requ...@r-project.org wrote:
Dear List,

I'd like to make a few modifications to the typical CART algorithm, and
I'd rather not code the whole thing from scratch.  Specifically I want
to use different in-sample and out-of-sample fit criteria in the split
choosing and cross-validation stages.

I see however that the code for CART in both the rpart and the tree
packages is written in C.

Two questions:

   * Where is the C code?  It might be possible to get a C-fluent
     programmer to help me with this.
   * Is there any code for CART that is written entirely in R?

Thanks,
Andrew

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to