The range vector is evaluated at the start of the loop, so it is only evaluated once. ind.length would be an unnecessary extra variable. --------------------------------------------------------------------------- Jeff Newmiller The ..... ..... Go Live... DCN:<jdnew...@dcn.davis.ca.us> Basics: ##.#. ##.#. Live Go... Live: OO#.. Dead: OO#.. Playing Research Engineer (Solar/Batteries O.O#. #.O#. with /Software/Embedded Controllers) .OO#. .OO#. rocks...1k --------------------------------------------------------------------------- Sent from my phone. Please excuse my brevity.
On July 31, 2014 11:09:59 AM PDT, Don McKenzie <d...@u.washington.edu> wrote: >While you�re at it, assign length(ind) to a variable before starting >the loop. Otherwise length() is called at each iteration. e.g., > >ind.length <- length(ind) >for (i in 1:ind.length) { > >etc. > >On Jul 31, 2014, at 10:57 AM, David L Carlson <dcarl...@tamu.edu> >wrote: > >> This is one of those times when you would do better to just use a >loop. It will be easier to debug and to see what is going on. Replace >the sapply() call with >> >> for (i in 1:length(ind)) { >> postscript(names(ind[i])) >> par(mar=c(6,8,6,5), cex=0.8) >> plot(ind[[i]][,c('YEAR','VALUE')], >> type='b', >> main = ind[[i]][1, "NAME"], >> . . . other commands . . . ) >> dev.off() >> } >> >> ------------------------------------- >> David L Carlson >> Department of Anthropology >> Texas A&M University >> College Station, TX 77840-4352 >> >> >> >> -----Original Message----- >> From: r-help-boun...@r-project.org >[mailto:r-help-boun...@r-project.org] On Behalf Of fd >> Sent: Thursday, July 31, 2014 9:37 AM >> To: r-help@r-project.org >> Subject: [R] Multiple plots and postscripts using split function >> >> Hi, >> >> I'm relatively new to R and I would like to do the following: >> >> I have a .csv file with four columns (NAME, ID, YEAR, VALUE) and >would like >> to do several xy plots with the year on the x-axis and the data >values >> (measurements) on the y-axis and after that export the different >plots to >> postcript. >> >> My .csv file looks something like this (only an example): >> >> NAME ID YEAR VALUE >> ADAMS 885 1988 -2 >> ADAMS 885 1989 0 >> BAHIA DEL DIABLO 2665 1999 4 >> BAHIA DEL DIABLO 2665 2000 8 >> BAHIA DEL DIABLO 2665 2001 19 >> BAHIA DEL DIABLO 2665 2002 13 >> BAHIA DEL DIABLO 2665 2003 13 >> BARTLEY 893 1983 0 >> BARTLEY 893 1984 -1 >> BARTLEY 893 1985 0 >> BARTLEY 893 1988 2 >> BARTLEY 893 1989 -1 >> CANADA 877 1972 -1 >> >> I have split the different items into groups and I'd like the plots >to have >> the title of NAME but the filename of the postscript to be exported >should >> have the ID as filename. >> >> My code so far: >> >> #Set Working Directory: >> setwd("/Users/Desktop/FV") >> # Read CSV >> dat <- read.csv("FV.csv", sep=";", header=TRUE) >> # Split Data >> ind <- split(x = dat,f = dat[,'ID']) >> nam <- names(ind) >> >> sapply(nam, function(x) { >> postscript(x) >> par(mar=c(6,8,6,5), cex=0.8) >> plot(ind[[x]][,c('YEAR','VALUE')], >> type='b', >> main = x, >> xlab="Time [Years]", >> ylab="Front variation") >> axis(1, at = seq(1800,2100,5), cex.axis=1, labels=FALSE, tcl=-0.3) >> axis(2, at = seq(-100000,100000,500), cex.axis=1, labels=FALSE, >> tcl=-0.3) >> >> dev.off() >> }) >> >> This results in plots with the title and filename of the resulting >> postscript being the same. Is there a way to get the plot title out >of the >> NAME column and the filename out of the ID? >> >> Additionally I'd only like to plot graphs for items with more than 3 >data >> values. Is this possible to incorporate in the split command? >> >> Another point is that some items have gaps in the time series where >no >> measurements were taken (in my example: BARTLEY from 1983 to 1985 and >1988 >> to 1989). I would like to plot using type= 'b' so that the points are >> connected with lines, but when doing that, the values between 1985 >and 1988 >> are automatically connected which I don't want. I'd like the plot to >start >> again at the value where the gap ends (in my example from 1988 >onwards). Is >> there a solution for this? >> >> Any help is kindly appreciated! Thanks for your help. >> >> Kind regards, >> fd >> >> >> >> -- >> View this message in context: >http://r.789695.n4.nabble.com/Multiple-plots-and-postscripts-using-split-function-tp4694850.html >> Sent from the R help mailing list archive at Nabble.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. >> ______________________________________________ >> 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. > >Don McKenzie >Research Ecologist >Pacific Wildland Fire Sciences Lab >US Forest Service > >Affiliate Professor >School of Environmental and Forest Sciences >University of Washington >d...@uw.edu > > > > > > [[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. ______________________________________________ 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.