Hello,
My solution works but it is incorrect. We should force the argument 'c',
not the return value. Like said in the help page for force. Which I've
only read after my first post. The following way makes much more sense
and is a bit shorter.
faux <- function(c) {
force(c)
function (x) get(paste0(c,"gamma"))(x,k,scale=theta)
}
Rui Barradas
Em 05-06-2013 10:49, Rui Barradas escreveu:
Hello,
If in faux we ?force the return value, the bug is gone.
faux <- function(c) {
f <- function (x) get(paste0(c,"gamma"))(x,k,scale=theta)
force(f)
f
}
Hope this helps,
Rui Barradas
Em 05-06-2013 07:13, Michael Weylandt escreveu:
On Jun 5, 2013, at 3:53, Julio Sergio <julioser...@gmail.com> wrote:
I want to generate specific gamma distribution functions, given fixed
parameters.
This is I have k, and theta, say
k <- 32.2549 # shape
theta <- 26.32809 # scale
# I have an auxiliary function that produces funcions according to
# a given character (this is to have either dgamma, pgamma or qgamma)
# for the specific parameters given above:
faux <- function(c) {
function (x) get(paste0(c,"gamma"))(x,k,scale=theta)
}
# So I can have, for instance, dgamma, and pgamma with
dff <- faux("d")
pff <- faux("p")
dff(1000)
## [1] 0.001433138
pff(1000)
## [1] 0.844305
Now, if I try to produce both functions in one shot with lapply, the
thing
doesn't work, see
ffs <- lapply(c("d", "p"), faux)
ffs[[1]](1000)
## [1] 0.844305
ffs[[2]](1000)
## [1] 0.844305
The two produced functions are the very same and correspond to pgamma!!
Maybe I'm missing something. Do you have any idea?
I think you are hitting a bit of strangeness R generously calls 'lazy
evaluation'. I'm afraid I don't have a reference at hand, but search
the archives for mention of the promise mechanism.
MW
Thanks,
-Sergio.
______________________________________________
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.
______________________________________________
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.
______________________________________________
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.
______________________________________________
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.