On Dec 10, 2012, at 1:03 PM, john-usace wrote:
Hi,
This question should be simple to answer. I am a new R user.
I have a data.frame called appended. I would like to break it into 7
smaller
datasets based on the value of a categorical variable dp (which has
values
1:7). I would like to name the smaller datasets set1, set2,
set3,....,set7.
I don't know how to refer to the variable in the for loop, when
naming the
output datasets. In STATA (which I am much more familiar with) each
i in the
foreach loop would be refered to as `i'. This is the code I've
included
below. I've also tried set[[i]] and set[i] neither works.
for (i in 1:7) {
set`i' = appended[which(appended$dp==i & appended$sampled==0), ]
I am not aware of any set function, nor can one append back-ticked
characters to unquoted characters and expect anything useful to happen.
write.table(set`i', file = "output\\set`i'.csv", sep = ",",
row.name=F)
}
I'm assuming I just need to replace `' with something else but I can
figure
out what that something else is.
In R the easy way would be to create a list that holds all of the
split dataframes:
newlist <- split( appended, catvar)
names(newlist) <- paste0("set", 1:7)
If you goal were just to have these in your workspace, you are done.
If you goal is to write them out to a file then you can either save it
as one object to be later pulled back into a session with the load(.)
command using this:
save(newlist, "newlist.Rdata")
Or you can write each individually with
lapply(names(newlist) , function(dfrm) {
write.table(newlist[[dfrm]],
file=paste0( dfrm, ".csv", sep=",",
rowname=FALSE) }
(Untested. You should read the help pages of the various functions
mentioned.)
--
David Winsemius, MD
Alameda, CA, USA
______________________________________________
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.