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.