First of all, please replace your "=" with "<-"  per general R-usage rules.
Next: you need to provide a clear listing of doAirport.R so we can tell what it actually is, and what you've done outside the function.

That said, my suspicion is that your parent function (the one which calls doAirport) isn't providing a proper set of inputs to create the mdf data frame. Hence dim(mdf) returns something bad and lblx doesn't exist.




<quote>
In my main R program, I have

source("retaanalysis/Functions/doAirport.R") .... stuff to read data and calculate ads sapply(ads, function(x) {doAirport(x, base)} )

And doAirport has

# analyze the flights for a given airport doAirport = function(df, base) {

# Get rid of unused runway factor levels (from other airports)
    df$lrw <- drop.levels(df$lrw) # In gdata package
# Drop messages from after the landing time
    df = df[df$PredTime >= 0.0,]
    airport = as.character(df[1,"Dest"])
#print it out

    airport
date = strptime(df[1,"on"], format="%Y-%m-%d") rwys = factor(unique(df$lrw), ordered=TRUE) # Get the names of the runways

    rwys = as.vector(rwys)
    nrwys = length(rwys)
# Make a data frame with the correct index for the runway
rdf = data.frame(lrw=rwys, rwyidx=seq(1:nrwys)) df = merge(df, rdf, all.x=TRUE)

#colours <- c(RF = "brown", AF =383, PH="red",PF = "black",
#BA = "green", FI = "blue", FF = 56, PS = "magenta", TC=94)
    colours <- c("0"="red","1"="black",
    "2"="green", "3"="blue","4"="magenta","5"="orange")
    shapes <- c(RF = "R", AF = "f", PH="H", PF = "P",
    BA = "B", FI = "I", FF = "F", PS = "S", TC="T")

#Plot individual flight data

    dfm = df
dfm = dfm[!df$MsgType=="AS",] # Eliminate AS messages dfm$MsgType=drop.levels(dfm$MsgType) dfm = dfm[as.numeric(dfm$PredTime) < 60.0,] dfm$tc= as.factor(floor(dfm$PredTime/10.0)) # get 10-minute bin dfm$flightfact = drop.levels(dfm$flightfact) row.names(dfm) = seq(1:dim(dfm)[1])

#Find max and min error for each flight
    library(zoo)
maxes = tapply(dfm$dt,dfm$flightfact,FUN=max) # Returns a list mins = tapply(dfm$dt,dfm$flightfact,FUN=min) mdf = data.frame(flight=index(maxes), maxes=as.numeric(maxes),

        mins=as.numeric(mins))
# Add a column for colors

mdf$clr = as.factor((mdf$flight - 1) %% 5) mc = c("red","cyan","green","blue","magenta","black")
# Plot these

outfile = paste(base, airport, "/", airport, "ErrorRange", date, ".pdf", sep="")

    pdf(file=outfile, width=14, height=7, par(lwd=.5))
# Get only ones that span 0

    lblx = dim(mdf)[1]/2
....
}

And if I manually set
df = ads[[j]]
doAirport runs OK.

But when called from the main program, I always get > sapply(ads, function(x) {doAirport(df, base)} ) Error in eval(expr, envir, enclos) : object 'lblx' not found In addition: Warning message:
'mode(onefile)' differs between new and previous

     ==> NOT changing 'onefile'
> sapply(ads, function(x) {doAirport(x, base)} ) Error in eval(expr, envir, enclos) : object 'lblx' not found In addition: Warning message:
'mode(onefile)' differs between new and previous

     ==> NOT changing 'onefile'

What am I doing wrong?

Thanks,
Jim

E-mail: jamesrome_at_gmail.com
URL: http://jamesrome.net
--
-----
Sent from my Cray XK6

______________________________________________
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.

Reply via email to