[R] Am having trouble calling a function
jim holtman
jholtman at gmail.com
Sun Aug 28 00:34:23 CEST 2011
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?
More information about the R-help
mailing list