Re: [R] Help with functions

From: Liaw, Andy <andy_liaw_at_merck.com>
Date: Thu 02 Feb 2006 - 08:57:37 EST


Just remember that you are writing _functions_, not _macros_. If you want the function to be able to see an object, pass that object to the function as one of the arguments. Alternatively, you can use the lexical scoping in R and define the (sub)functions inside the `main' function.

Andy

From: Pryseley Assam
>
> Dear R-users
>
> I intend to create a function which calls some smaller
> other functions in return. Some of these smaller functions
> all call some functions. I do not know a good way to do this.
> I tried using the source() function to include the smaller
> functions within the main functions before they are called.
> This does not work, or maybe i am not doing the right thing.
> For example:
>
> the following quantities are computed in the main function
> (only a part of the main function is shown below)
>
> ###############################################################
> # quantities for bootstrap confidence intervals
> ###############################################################
> r.value<- cor(x,y)
> npb.B <- mean(r)-r.value
> npb.mean <- mean(r)
> npb.var <- var(r)
> r.star <- sort(r)
> z.star <- (r.star - mean(r.star))/sqrt(var(r.star))
>
>
> after which the main function calls the function
> (i.s.conf.int) shown below, which is saved in a different script file
>
> ###################################################
> # Confidence Interval
> ###################################################
> i.s.conf.int <- function(type) {
> switch(type,
> a = nci(),
> b = inci(),
> c = bbi(),
> d = pi(),
> e = si())
> }
>
> Also, this 'sub' function (i.s.conf.int) may call one of 5
> other smaller functions saved in yet another file, or the
> same file as the function "i.s.conf.int".
>
> However, these 5 functions need the quantities calculated
> in the main function. One of these functions is shown below:
>
> ###############################################################
> # nonparametric bootstrap normal confidence interval
> ###############################################################
> nci <-function () {
> npb.n.L <- r.value - 1.96*sqrt(npb.var)
> npb.n.U <- r.value + 1.96*sqrt(npb.var)
> npb.n <- array(data = c( npb.n.L, npb.n.U),
> dim = c(1,2),
> dimnames = list("Estimates" ,c("LowerBound","UpperBound")))
>
> npb.n.CI <- list( Type = "Normal Confidence Interval",
> ConfidenceInterval= npb.n)
> npb.n.CI
> }
>
> I use the source() function to include these
> "secondary/sub" functions, just before they are called the
> main function. I get an Error message when any of the 5 small
> functions is executing : that it can not find the quantities
> calculated in the main function.
>
> So my question boils down to how can i call functions from
> different files in the main function, so that the recognise
> quantities already calculated in the main function or passed
> as arguements to the main function ?
>
> Thanks
> Pryseley.
>
>
>
>
> ---------------------------------
> Bring words and photos together (easily) with
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>
>



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Thu Feb 02 09:05:56 2006

This archive was generated by hypermail 2.1.8 : Thu 02 Feb 2006 - 20:22:10 EST