[R] Error: evaluation nested too deeply: infinite recursion / options(expressions=)?
David Winsemius
dwinsemius at comcast.net
Wed Aug 31 17:26:56 CEST 2011
On Aug 31, 2011, at 11:05 AM, Bert Gunter wrote:
>>
>> In R functions are "things" but they are not "strings" and cannot be
>> executed by just asserting a character vector element.
>
> ... But note that they can be executed by by asserting a list of
> functions component (as well as by do.call below)
>
>> x <- c(rnorm, rt, rweibull) ## this is a list of functions
>> x[[2]](10,df=5)
> [1] -1.03683857 1.20245119 -2.77762457 -0.02124206 -0.78748356
> 1.36294023
> [7] 0.50626709 -0.37386404 0.34371389 -1.28934128
And the OP may want to also look at the examples in:
?match.arg
?match.fun
And ponder these results:
> funlist <- list(dgamma, dnorm, dexp)
> "dgamma" %in% funlist
[1] FALSE
> class(funlist)
[1] "list"
> class(funlist[1])
[1] "list"
> class(funlist[[1]])
[1] "function"
> match.fun("dgamma")
function (x, shape, rate = 1, scale = 1/rate, log = FALSE)
.Internal(dgamma(x, shape, scale, log))
<environment: namespace:stats>
--
David.
>
>
> Cheers,
> Bert
>
>
> If you want to
>> construct a 'call' from a a character, you can bridge that divide
>> with
>> do.call:
>>
>> ?do.call
>> fn <- paste("d", "gamma", sep="")
>> do.call(fn, list(1:10, shape=1) )
>> [1] 0.36787944117 0.13533528324 0.04978706837 0.01831563889
>> 0.00673794700
>> [6] 0.00247875218 0.00091188197 0.00033546263 0.00012340980
>> 0.00004539993
>>
>> --
>> David
>>
David Winsemius, MD
West Hartford, CT
More information about the R-help
mailing list