[R] Help with vectorization

R. Michael Weylandt michael.weylandt at gmail.com
Thu Apr 12 21:08:42 CEST 2012


Perhaps ?outer -- well, not outer directly, but a multivariate outer
-- I keep this one around for personal use:

`mouter` <- function(..., FUN = "*"){
    dotArgs <- list(...)
    FUN <- match.fun(FUN)

    if(length(dotArgs) == 1L)
	return(unlist(dotArgs))
    if (length(dotArgs) == 2L)
	return(do.call(base::outer, c(dotArgs, FUN = FUN)))

	base::outer(dotArgs[[1]], do.call(Recall, c(dotArgs[-1], FUN = FUN)), FUN)
}

So then something like:

mouter(wl, k1, k2, k3, FUN = function(w, k1, k2, k3) k1 *exp(k2 / (w + k3)))

if I understand your request correctly.

Hope this helps,

Michael

On Thu, Apr 12, 2012 at 2:16 PM, Filoche <pmassicotte at hotmail.com> wrote:
> Hi every one. I have a exponential function (3 fitting parameters) that I
> would like to use to produce data (6 series) without having to use a loop.
> Here
>
> wl = seq(300,500,1)
>
> k1 = c(1.2e-6, 4.9e-6, 9.6e-6, 2.7e-10, 6.7e-8, 7.44e-6)
> k2 = c(726, 352, 128, 5232, 1538, 128)
> k3 = c(-176, -224, -257, 88.7, -111, -256)
>
> stations = c('R5d', 'R5a', 'R9', '108', '406', '409')
>
>
> phiDIC = k1[1]*exp(k2[1]/(wl+k3[1])) #Here I would like to vectorize this
> function to create my 6 series instead of having to loop.
>
>
> Regards,
> Phil
>
> --
> View this message in context: http://r.789695.n4.nabble.com/Help-with-vectorization-tp4552638p4552638.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> R-help at 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.



More information about the R-help mailing list