[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