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
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
Add the following to your script: options(error=utils::recover) (actually put it in you Startup script), then learn how to use the debugging in R. On the error, this should provide a trace of the stack so that we know where the error occurs. By learning how to use debug/browser, you will be able to see what the environment is at the point of the error, then maybe some assistance can be given. On Sat, Aug 27, 2011 at 4:34 PM, James Rome <jamesrome at gmail.com> wrote:> 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 > > ______________________________________________ > 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 Data Munger Guru What is the problem that you are trying to solve?