tree.pred <- yourfunction works!

Thanks, Josh!



On Wed, May 26, 2010 at 9:35 AM, Joshua Wiley <[email protected]>wrote:

> If you use return you need to assign the results to an object.  For
> instance
>
> tree.pred <- yourfunction
>
> then tree.pred will contain whatever data you returned from your
> function.  If you truly want your function to assign objects
> internally that are available in your general workspace, instead of
> just returning the data you want try:
>
> assign(variablename, datayouwantout, envir=.GlobalEnv)
>
> this will make an assignment to the global environment rather than the
> function's environment.  In general this seems risky though as your
> function could be overwriting data in your main workspace without you
> knowing it.
>
> HTH,
>
> Josh
>
>
>
> On Wed, May 26, 2010 at 9:26 AM, Changbin Du <[email protected]> wrote:
> > HI, Dear R community,
> >
> > I am writing the following function to create one data set(*tree.pred*)
> and
> > one vector(*valid.out*) from loops. Later, I want to use the data set
> from
> > this loop to plot curves.  I have tried return, list, but I can  not use
> the
> > *tree.pred* data and *valid.out* vector.
> >
> >
> > auc.tree<- function(msplit,mbucket) {
> >
> >    *   tree.pred<-data.frame()
> >       valid.out<-vector()*
> >
> >
> >       for(i in 1:10)  {
> >       cat('Fold ', i, '\n')
> >
> >       out.fold.c <-((i-1)*c.each.part +1):(i*c.each.part)
> >       out.fold.n <-((i-1)*n.each.part +1):(i*n.each.part)
> >
> >       train.cv <- n.cc[-out.fold.c, c(2:401, 418)]
> >       train.nv <- n.nn[-out.fold.n, c(2:401, 418)]
> >
> >       train.v<-rbind(train.cv, train.nv) #training data for feature
> > selection
> >
> >    # grow tree
> > fit.dimer <- rpart(out ~ ., method="class", data=train.v)
> >
> > at<-grep("<leaf>", fit.dimer$frame[, "var"], value=FALSE,
> ignore.case=TRUE)
> >
> > varr<-as.character(unique(fit.dimer$frame[-at, "var"]))
> >
> >       train.cc <- n.cc[-out.fold.c, ]
> >       valid.cc <- n.cc[out.fold.c, ]
> >
> >       train.nn <- n.nn[-out.fold.n,]
> >       valid.nn <- n.nn[out.fold.n,]
> >
> >       train<-rbind(train.cc, train.nn) #training data
> >       valid<-rbind(valid.cc, valid.nn) # validation data
> >
> > #creat data set contains the following variables
> > myvar<-names(gh5_h) %in% c(varr, "num_cell","num_genes","position",
> > "acid_per", "base_per", "charge_per", "hydrophob_per", "polar_per",
> "out")
> >
> >       train<-train[myvar] # update training set
> >       valid<-valid[myvar]
> >
> > control<-rpart.control(xval=10, cp=0.01, minsplit=5, minbucket=5)
> #control
> > the size of the initial tree
> >       tree.fit <- rpart(out ~ ., method="class", data=train,
> > control=control) # model fitting
> >       p.tree<- prune(tree.fit,
> > cp=tree.fit$cptable[which.min(tree.fit$cptable[,"xerror"]),"CP"]) # prune
> > the tree
> >
> >
> > #get the prediction for the valid data set.
> > tree.pred.r <-predict(p.tree, newdata=valid, type="prob")
> > valid.r<-valid$out
> >
> > tree.pred <-rbind(tree.pred, tree.pred.r)
> > valid.out<-c(valid.out, valid.r)
> > cat('Dim of tree.pred', dim(tree.pred), 'length of valid.out',
> > length(valid.out), '\n' )
> >
> >                               }
> > *list(tree.pred)
> > list(valid.out)*
> > cat('Minsplit ', msplit, 'Minbucket', mbucket, '\n')
> > cat('10-cross validation is done! \n')
> >  }
> >
> >
> >> auc.tree(5, 5) #
> > Fold  1
> > Dim of tree.pred 141 2 length of valid.out 141
> > Fold  2
> > Dim of tree.pred 282 2 length of valid.out 282
> > Fold  3
> > Dim of tree.pred 423 2 length of valid.out 423
> > Fold  4
> > Dim of tree.pred 564 2 length of valid.out 564
> > Fold  5
> > Dim of tree.pred 705 2 length of valid.out 705
> > Fold  6
> > Dim of tree.pred 846 2 length of valid.out 846
> > Fold  7
> > Dim of tree.pred 987 2 length of valid.out 987
> > Fold  8
> > Dim of tree.pred 1128 2 length of valid.out 1128
> > Fold  9
> > Dim of tree.pred 1269 2 length of valid.out 1269
> > Fold  10
> > Dim of tree.pred 1410 2 length of valid.out 1410
> > Minsplit  5 Minbucket 5
> > 10-cross validation is done!
> >
> >
> > if use return, it will print on the screen, you still can not use it to
> > plot.  Can anyone help me with this, thanks so much!
> >
> >
> >
> > --
> > Sincerely,
> > Changbin
> > --
> >
> >
> >        [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > [email protected] mailing list
> > 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.
> >
>
>
>
> --
> Joshua Wiley
> Senior in Psychology
> University of California, Riverside
> http://www.joshuawiley.com/
>



-- 
Sincerely,
Changbin
--

        [[alternative HTML version deleted]]

______________________________________________
[email protected] mailing list
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