Re: [R] Am having trouble calling a function

2011-08-27 Thread jim holtman
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  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: jamesr...@gmail.com
> URL: http://jamesrome.net
>
> __
> 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.
>



-- 
Jim Holtman
Data Munger Guru

What is the problem that you are trying to solve?

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


Re: [R] Am having trouble calling a function

2011-08-27 Thread Carl Witthoft

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.






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.