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

______________________________________________
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.

Reply via email to