Thank you, Michael - it worked - it was exactly what I was looking for. Thank you, David - I added the link to my toolbar - and sorry, you are right, I should have searched more. Dimitri
On Fri, Feb 3, 2012 at 4:52 PM, David Winsemius <dwinsem...@comcast.net> wrote: > Dimitri. > > This has been asked a whole bunch of times on this list. Do a search on the > text in the error message if you doubt me. I have this link on my toolbar: > > R-search: > http://search.r-project.org/cgi-bin/namazu.cgi?query=&max=100&result=normal&sort=score&idxname=Rhelp10&idxname=Rhelp08&idxname=Rhelp02&idxname=functions > > -- > David. > > > On Feb 3, 2012, at 4:28 PM, R. Michael Weylandt wrote: > >> Try opening the file up in a text editor and inserting a blank line or >> two on the end. (There's either an EOL or EOF character missing and >> this trick usually works for me -- never sure why/when it happens >> though) >> >> Michael >> >> On Fri, Feb 3, 2012 at 4:23 PM, Dimitri Liakhovitski >> <dimitri.liakhovit...@gmail.com> wrote: >>> >>> Dear R-ers, >>> >>> I hope there is a really simple solution to my problem. >>> I've written a function that I saved in an .r file. I source this file >>> in my code. For a while it worked fine. But then when I run the line: >>> >>> source("F mylineplot.r") >>> >>> I started getting a warning: >>> In readLines(file) : incomplete final line found on 'F mylineplot.r' >>> >>> I have no idea why - I tried to check and to recheck what's going on, >>> but am not finding anything. >>> The code works both when I try to run it NOT as a function and when I >>> run it AS a function. So why the warning message? >>> >>> Just in case - the text of my function inside my file that I source. I >>> really don't expect anyone to dig into it - but maybe something will >>> jump at you? >>> Thanks a lot! >>> Dimitri >>> >>> >>> ### Creating a plot with (aggregated) several lines: >>> # indata - my data frame >>> # datesvar - name of the variable that contains dates >>> # inars - names of the variables to be graphed >>> # myfunction - function to be used (mean or sum) >>> # my metric - string for the metric >>> # mytitle - title of the graph >>> # fixedy - if 1, range on y axis starts with zero >>> # indata=en;datesvar="Week";invars=seas[5];myfunction=mean >>> # mymetric="TEST";fixedy=0;title="BLA" >>> >>> mylines = >>> function(indata,datesvar,invars,myfunction,mymetric,mytitle,fixedy=0) >>> { >>> >>> >>> all.colors<-c("#E0EEEE","#0000CD","#D4D4D4","#FFC1C1","#FFDEAD","#9ACD32", >>> "#99CCFF","#6495ED","#66CDAA","#EEC900","#BC8F8F", >>> "#C00000","#696969","#473C8B","#8B4500", "#FF7F00","#9370DB", >>> "#800000","#104E8B","#228B22")[20:1] >>> >>> >>> myagg<-aggregate(indata[invars],by=indata[datesvar],FUN=myfunction) >>> yrange=range(pretty(as.matrix(myagg[2:length(myagg)]))) >>> if(fixedy==0){ >>> ymin<-yrange[1] >>> ymax<-yrange[2]} else { >>> ymin<-0 >>> ymax<-yrange[2]} >>> ydistance<-ymax-ymin >>> if(ydistance>0.1 & ydistance<=1){mystep<-0.1} else { >>> if(ydistance>1 & ydistance<=10){mystep<-1/2} else { >>> if(ydistance>10 & ydistance<=100) {mystep<-10/5} else { >>> if(ydistance>100 & ydistance<=1000) {mystep<-100/5} else { >>> if(ydistance>1000 & ydistance<=10000) {mystep<-1000/2} else { >>> if(ydistance>10000 & ydistance<=100000) {mystep<-10000/5} else >>> { >>> mystep<-100000/5 >>> } >>> } >>> } >>> } >>> } >>> } >>> nr.of.dates<-length(myagg[[datesvar]]); index<-seq(1,nr.of.dates,2) >>> par(bg = "white") >>> >>> plot(x=myagg[[datesvar]],y=myagg[,2],ylim=c(ymin,ymax),col=all.colors[1],type='l', >>> ylab=mymetric,xlab="",lwd=2,xaxt='n',yaxt='n',main=mytitle) >>> mycolors<-1 >>> for(i in 2:length(invars)){ >>> mycolors<-c(mycolors,(i)) >>> } >>> >>> axis(1, labels =format(as.Date(myagg[[datesvar]][index], >>> origin="1970-01-01"), "%Y-%m-%d"), >>> at=myagg[[datesvar]][index], las=2,cex.axis=0.8) >>> axis(2, >>> labels=seq(ymin,ymax,by=mystep),at=seq(ymin,ymax,by=mystep),las=1,cex.axis=0.9) >>> abline(v=myagg[[datesvar]][index],lty="dotted",col = "lightgray") >>> # abline(h=seq(ymin,ymax,by=mystep), lty="dotted",col = "lightgray") >>> >>> legend("topleft",inset=0,legend=invars,fill=all.colors[mycolors],horiz=T,bg="white",cex=1) >>> # ?plot >>> >>> >>> points(myagg[[datesvar]],myagg[[invars[1]]],type="l",lwd=3,lty=i,col=all.colors[1]) >>> for(i in 2:length(invars)){ >>> >>> points(myagg[[datesvar]],myagg[[invars[i]]],type="l",lwd=2,lty=1,col=all.colors[i]) >>> # or lty=i >>> mycolors<-c(mycolors,(i)) >>> } >>> return(myagg) >>> } >>> >>> >>> -- >>> Dimitri Liakhovitski >>> marketfusionanalytics.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. > > > David Winsemius, MD > West Hartford, CT > -- Dimitri Liakhovitski marketfusionanalytics.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.