Thanks for your ideas. They are really helpful for me to think about my question. Cheers, 2009/11/9 David Winsemius <dwinsem...@comcast.net>
> > On Nov 9, 2009, at 8:45 AM, rusers.sh wrote: > > Hi Johann, >> Excellent. That is what i really want. A little problem is why the "c.n" >> does not exist. Should the "c.n" in the memory? Sometimes, i also hope to >> see "c.n" directly in R besides exporting. Could i see the "c.n" with >> some >> function in the loops? >> > > a<-c(1:10) >>> b<-c(rep(1,3),rep(2,3),rep(3,4)) >>> c<-data.frame(a,b) #c is the example data >>> >> > And not a particularly good choice for a variable name by virtue of > potential "wetware confusion" with the concatenate function, c(.) > > > > num<-c(unique(b)) >>> for (n in num) { >>> >> + c.n <- c[c$b==n,] >> + write.csv(c.n, file=paste("c:/c_", n, ".csv", sep=""))} >> > > num >>> >> [1] 1 2 3 >> >>> c.1 >>> >> Error: object 'c.1' not found >> > > And you were apparently expecting variables "c.1", "c.2", and "c.3" to be > constructed in that loop? That is way beyond the R-interpreter's currently > level of integration with the device drivers reading input from the > electroencephalograph that must be sitting on your machine. > > Perhaps you could have succeeded with: > > dftemp <- list() # outside the loop, need a list because results of the > extract operation will be a df. > .......... > dftemp[[n]] <- c[c$b == n, ] # inside the loop > write.csv(dftemp[[n]], file=paste("c:/c_", n, ".csv", sep=""))} > > The fact that you immediately wrote it to a file that did not store its > name would make creation of a list unnecessary inside the loop, but it would > store the results in a form that could be examined later from the command > line. > > > > c.2 >>> >> Error: object 'c.2' not found >> >>> c.3 >>> >> Error: object 'c.3' not found >> >> Thanks a lot. >> ----------------- >> Jane Chang >> Queen's >> >> >> >> 2009/11/9 Johann Hibschman <joha...@gmail.com> >> >> On Nov 8, 2009, at 7:23 PM, rusers.sh wrote: >>> >>> for (i in num) { >>> >>>> c_num<-c[c$b==num,] >>>> write.csv(c_num,file="c:/c_num.csv") >>>> } >>>> >>>> Warning messages: >>>> 1: In c$b == num : >>>> longer object length is not a multiple of shorter object length >>>> >>>> >>> This is because you're comparing column b to the entire vector of numbers >>> (num), not the current number in the iteration (i). The first line of >>> the >>> loop should be "c_num<-c[c$b==i,]". >>> >>> From a style point of view, I'd use "n" as my variable, since "i" is too >>> commonly used as an integer index. >>> >>> Also, you will be overwriting the same file, called "c_num.csv", on each >>> iteration. >>> >>> You should try something more like: >>> >>> for (n in num) { >>> c.n <- c[c$b==n,] >>> write.csv(c.n, file=paste("c:/c_", n, ".csv", sep="") >>> } >>> >>> I hope that helps. >>> >>> Cheers, >>> Johann Hibschman >>> >>> > David Winsemius, MD > Heritage Laboratories > West Hartford, CT > > -- ----------------- Jane Chang Queen's [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org 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.