Hello, I am trying to create subsets of grouped data (by area size), and use the area size as part of the output name. The code below works for area (xout) 1 and 50, the other files are given NA for an area. A simple example: xout <- c(1,5,10,25,50,100) for(i in xout) { print(paste("Areal_Ppt_",xout[i],"sqmi.txt", sep="")) } [1] "Areal_Ppt_1sqmi.txt" [1] "Areal_Ppt_50sqmi.txt" [1] "Areal_Ppt_NAsqmi.txt" [1] "Areal_Ppt_NAsqmi.txt" [1] "Areal_Ppt_NAsqmi.txt" [1] "Areal_Ppt_NAsqmi.txt" The actual code and partial dataset are below. Thanks for your help, Doug ############### ### Real Code ### ############### data2 <- read.table("GROUP.txt", header=T, sep=",") xout <- c(1,5,10,25,50,100) for(i in xout) { name <- paste("Areal_Ppt_",xout[i],"sqmi.txt", sep="") b.1 <- subset(data2, area == i) write.table(b.1, file=name,quote=FALSE,row.names=FALSE, sep=",") } ###################### ### Dataset GROUP.txt ### ####################### hr,area,avg_ppt 21,1,0 21,5,0.001 21,10,0.001 21,25,0.005 21,50,0.01 21,100,0.011 22,1,0.003 22,5,0.005 22,10,0.00824 22,25,0.04258 22,50,0.057 22,100,0.101 23,1,2.10328 23,5,2.02755 23,10,1.93808 23,25,1.78408 23,50,1.67407 23,100,1.568 24,1,3.20842 24,5,3.09228 24,10,2.95452 24,25,2.71661 24,50,2.54607 24,100,2.38108 -- --------------------------------- Douglas M. Hultstrand, MS Senior Hydrometeorologist Metstat, Inc. Windsor, Colorado voice: 970.686.1253 email: dmhultst at metstat.com web: http://www.metstat.com
On 30/11/2009 7:49 PM, Douglas M. Hultstrand wrote:> Hello, > > I am trying to create subsets of grouped data (by area size), and use > the area size as part of the output name. The code below works for area > (xout) 1 and 50, the other files are given NA for an area. > > A simple example: > xout <- c(1,5,10,25,50,100) > for(i in xout) { print(paste("Areal_Ppt_",xout[i],"sqmi.txt", sep="")) }Your loop loops over the values in xout, so no need for xout[i]. You should be using for(i in seq_along(xout)) if you want the indices, or just use i instead of xout[i] in the paste. Duncan Murdoch> [1] "Areal_Ppt_1sqmi.txt" > [1] "Areal_Ppt_50sqmi.txt" > [1] "Areal_Ppt_NAsqmi.txt" > [1] "Areal_Ppt_NAsqmi.txt" > [1] "Areal_Ppt_NAsqmi.txt" > [1] "Areal_Ppt_NAsqmi.txt" > > The actual code and partial dataset are below. > > Thanks for your help, > Doug > > ############### > ### Real Code ### > ############### > data2 <- read.table("GROUP.txt", header=T, sep=",") > xout <- c(1,5,10,25,50,100) > for(i in xout) { > name <- paste("Areal_Ppt_",xout[i],"sqmi.txt", sep="") > b.1 <- subset(data2, area == i) > write.table(b.1, file=name,quote=FALSE,row.names=FALSE, sep=",") > } > > ###################### > ### Dataset GROUP.txt ### > ####################### > hr,area,avg_ppt > 21,1,0 > 21,5,0.001 > 21,10,0.001 > 21,25,0.005 > 21,50,0.01 > 21,100,0.011 > 22,1,0.003 > 22,5,0.005 > 22,10,0.00824 > 22,25,0.04258 > 22,50,0.057 > 22,100,0.101 > 23,1,2.10328 > 23,5,2.02755 > 23,10,1.93808 > 23,25,1.78408 > 23,50,1.67407 > 23,100,1.568 > 24,1,3.20842 > 24,5,3.09228 > 24,10,2.95452 > 24,25,2.71661 > 24,50,2.54607 > 24,100,2.38108 >
Here is what you want: xout <- c(1,5,10,25,50,100) for(i in xout) { print(paste("Areal_Ppt_",i,"sqmi.txt", sep="")) } Notice that 'i' will be assigned each value in xout; you do not have to index into the vector. Notice that you second value is 50 which is xout[5]. On Mon, Nov 30, 2009 at 7:49 PM, Douglas M. Hultstrand <dmhultst at metstat.com> wrote:> Hello, > > I am trying to create subsets of grouped data (by area size), and use the > area size as part of the output name. ?The code below works for area (xout) > 1 and 50, the other files are given NA for an area. > > A simple example: > xout <- c(1,5,10,25,50,100) > for(i in xout) { print(paste("Areal_Ppt_",xout[i],"sqmi.txt", sep="")) } > [1] "Areal_Ppt_1sqmi.txt" > [1] "Areal_Ppt_50sqmi.txt" > [1] "Areal_Ppt_NAsqmi.txt" > [1] "Areal_Ppt_NAsqmi.txt" > [1] "Areal_Ppt_NAsqmi.txt" > [1] "Areal_Ppt_NAsqmi.txt" > > The actual code and partial dataset are below. > > Thanks for your help, > Doug > > ############### > ### Real Code ### > ############### > data2 <- read.table("GROUP.txt", header=T, sep=",") > xout <- c(1,5,10,25,50,100) > for(i in xout) { > ? name <- paste("Areal_Ppt_",xout[i],"sqmi.txt", sep="") > ? b.1 <- subset(data2, area == i) > ? write.table(b.1, file=name,quote=FALSE,row.names=FALSE, sep=",") > } > > ###################### > ### Dataset GROUP.txt ### > ####################### > hr,area,avg_ppt > 21,1,0 > 21,5,0.001 > 21,10,0.001 > 21,25,0.005 > 21,50,0.01 > 21,100,0.011 > 22,1,0.003 > 22,5,0.005 > 22,10,0.00824 > 22,25,0.04258 > 22,50,0.057 > 22,100,0.101 > 23,1,2.10328 > 23,5,2.02755 > 23,10,1.93808 > 23,25,1.78408 > 23,50,1.67407 > 23,100,1.568 > 24,1,3.20842 > 24,5,3.09228 > 24,10,2.95452 > 24,25,2.71661 > 24,50,2.54607 > 24,100,2.38108 > > -- > --------------------------------- > Douglas M. Hultstrand, MS > Senior Hydrometeorologist > Metstat, Inc. Windsor, Colorado > voice: 970.686.1253 > email: dmhultst at metstat.com > web: http://www.metstat.com > > ______________________________________________ > R-help at 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. >-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve?
Hi Douglas, You were almost there. Just remember that your iterator is i and not xout. R> xout <- c(1,5,10,25,50,100) R> for(i in xout) print(paste("Areal_Ppt_", i,"sqmi.txt", sep="")) [1] "Areal_Ppt_1sqmi.txt" [1] "Areal_Ppt_5sqmi.txt" [1] "Areal_Ppt_10sqmi.txt" [1] "Areal_Ppt_25sqmi.txt" [1] "Areal_Ppt_50sqmi.txt" [1] "Areal_Ppt_100sqmi.txt" Best regards, Jorge On Mon, Nov 30, 2009 at 7:49 PM, Douglas M. Hultstrand <> wrote:> Hello, > > I am trying to create subsets of grouped data (by area size), and use the > area size as part of the output name. The code below works for area (xout) > 1 and 50, the other files are given NA for an area. > > A simple example: > xout <- c(1,5,10,25,50,100) > for(i in xout) { print(paste("Areal_Ppt_",xout[i],"sqmi.txt", sep="")) } > [1] "Areal_Ppt_1sqmi.txt" > [1] "Areal_Ppt_50sqmi.txt" > [1] "Areal_Ppt_NAsqmi.txt" > [1] "Areal_Ppt_NAsqmi.txt" > [1] "Areal_Ppt_NAsqmi.txt" > [1] "Areal_Ppt_NAsqmi.txt" > > The actual code and partial dataset are below. > > Thanks for your help, > Doug > > ############### > ### Real Code ### > ############### > data2 <- read.table("GROUP.txt", header=T, sep=",") > xout <- c(1,5,10,25,50,100) > for(i in xout) { > name <- paste("Areal_Ppt_",xout[i],"sqmi.txt", sep="") > b.1 <- subset(data2, area == i) > write.table(b.1, file=name,quote=FALSE,row.names=FALSE, sep=",") > } > > ###################### > ### Dataset GROUP.txt ### > ####################### > hr,area,avg_ppt > 21,1,0 > 21,5,0.001 > 21,10,0.001 > 21,25,0.005 > 21,50,0.01 > 21,100,0.011 > 22,1,0.003 > 22,5,0.005 > 22,10,0.00824 > 22,25,0.04258 > 22,50,0.057 > 22,100,0.101 > 23,1,2.10328 > 23,5,2.02755 > 23,10,1.93808 > 23,25,1.78408 > 23,50,1.67407 > 23,100,1.568 > 24,1,3.20842 > 24,5,3.09228 > 24,10,2.95452 > 24,25,2.71661 > 24,50,2.54607 > 24,100,2.38108 > > -- > --------------------------------- > Douglas M. Hultstrand, MS > Senior Hydrometeorologist > Metstat, Inc. Windsor, Colorado > voice: 970.686.1253 > email: dmhultst@metstat.com > web: http://www.metstat.com > > ______________________________________________ > 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. >[[alternative HTML version deleted]]