[R] (not so real) function (more like #include)
Gabor Grothendieck
ggrothendieck at gmail.com
Wed Oct 4 17:25:23 CEST 2006
longfun could just pass a, b and d to each of the individual
functions and each of the individual functions could pass
out back as a return value.
f1 <- f2 <- function(a, b, d) a+b+d
longfun1 <- function() {
a <- b <- d <- 1
out <- f1(a, b, d)
out <- f2(a, b, d) + out
out
}
longfun1() # 6
If the problem is that a, b and d actually represent 100 variables, say,
and its a nuisance to pass them all explicitly you could do this:
f1 <- f2 <- function() with(parent.frame(), a + b + d)
longfun2 <- function() {
a <- b <- d <- 1
out <- f1()
out <- f2() + out
out
}
longfun2() # 6
or you could do it this way if you would prefer to have longfun
control the scoping rather than having it done within each
individual function:
f1 <- f2 <- function() a+b+d
longfun3 <- function() {
a <- b <- d <- 1
environment(f1) <- environment(f2) <- environment()
out <- f1()
f2() + out
}
longfun3() # 6
On 10/4/06, Meinhard Ploner <meinhardploner at gmx.net> wrote:
> Hello R users,
>
> I have a very long function with parts of that looking like a list of
> jobs. The first part of the function defines a lot of local
> variables, which are used by the jobs. Now I extracted the "job" part
> und putted them into an external file, used by "source(, local=T)",
> which is more comfortable to me. Apart from that it gives me the
> opportunity that more users can work on the project. Is it possible
> to define a function for that code and passing to it the environment
> of f() without save(list=ls()) and load() .... ?
>
> Thanks in advance
> Meinhard Ploner
>
> longfun <- f() {
>
> ## lot of local variables:
> a <- ...
> b <- ...
> d <- ...
> ...
>
> out <- ...
>
> source("job1.txt", local=TRUE) #changes out, uses a, b, d, ...
>
> source("job2.txt", local=TRUE) # changes out, uses a, b, d, ...
> ...
> }
>
>
>
> version
> _
> platform i386-apple-darwin8.6.1
> arch i386
> os darwin8.6.1
> system i386, darwin8.6.1
> status
> major 2
> minor 3.1
> year 2006
> month 06
> day 01
> svn rev 38247
> language R
> version.string Version 2.3.1 (2006-06-01)
>
> ______________________________________________
> R-help at 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
> and provide commented, minimal, self-contained, reproducible code.
>
More information about the R-help
mailing list