Thanks so much, David! The following codes works!
result.fun <- lapply(1:2, function(i) cv.fold(i, 3, 0.3)) On Tue, Sep 7, 2010 at 3:35 PM, David Winsemius <[email protected]>wrote: > > On Sep 7, 2010, at 5:43 PM, Changbin Du wrote: > > cv.fold<-function(i, size=3, rang=0.3){ >> 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:2401, 2417)] >> train.nv <- n.nn[-out.fold.n, c(2:2401, 2417)] >> >> train.v<-rbind(train.cv, train.nv) #training data for feature >> selection >> >> # grow tree >> fit.dimer <- rpart(as.factor(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(gh9_h) %in% c(varr, "out") >> >> train<-train[myvar] # update training set >> valid<-valid[myvar] >> >> nnet.fit<-nnet(as.factor(out) ~ ., data=train, size=size, rang=rang, >> decay=5e-4, maxit=500) # model fitting >> >> #get the validation error >> mc<-table(valid$out, predict(nnet.fit, valid, type="class")) #confusion >> matrix >> >> fp<-mc[1,2]/sum(mc[1,]) #false positive >> fn<- mc[2,1]/sum(mc[2,]) #false negative >> accuracy.r<-1-(mc[1,2]+mc[2,1])/sum(mc) #total accuracy rate >> >> return(c(fp, fn, accuracy.r)) >> >> } >> >> result.fun <- lapply(1:2, cv.fold(i, size=5, rang=0.3)) >> >> I got the following error message: >> >> *Error in match.fun(FUN) : >> 'cv.fold(i, size = 5, rang = 0.3)' is not a function, character or symbol >> > > Generally when one is passing an atomic vector argument to a function one > would use sapply (but it may be a distinction withou a difference here.) ... > and furthermore the additional arguments would be given as named constants: > > ?sapply > > Perhaps (untested): > > result.fun <- sapply(1:2, cv.fold, size=5, rang=0.3)) > > or perhaps: > > result.fun <- sapply(1:2, function(i) cv.fold(i, size=5, rang=0.3)) > > > As always the provision of a working example, perhaps even from one of the > help pages, would allow testing, and it's always good manners to specify > which package has non-base functions: > > > ?n.cc > No documentation for 'n.cc' in specified packages and libraries: > you could try '??n.cc' > > ?rpart > No documentation for 'rpart' in specified packages and libraries: > you could try '??rpart' > > ?train > No documentation for 'train' in specified packages and libraries: > you could try '??train' > > (I have suspicions which packages they come from, but one never knows....) > > -- > David. > > > >> >> I do want to change the size and rang parameters some time. >> >> * >> Can anyone help me this this? Thanks so much! >> >> >> -- >> Sincerely, >> Changbin >> > > > David Winsemius, MD > West Hartford, CT > > -- Sincerely, Changbin -- Changbin Du DOE Joint Genome Institute Bldg 400 Rm 457 2800 Mitchell Dr Walnut Creet, CA 94598 Phone: 925-927-2856 [[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.

