[R] incomplete final line found on <name of my sourced function file>

Dimitri Liakhovitski dimitri.liakhovitski at gmail.com
Fri Feb 3 22:23:34 CET 2012


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



More information about the R-help mailing list