【问题标题】:run a function with multiple values for more than one arguments that are not the first ones为多个不是第一个参数的参数运行具有多个值的函数
【发布时间】:2010-12-08 19:46:58
【问题描述】:

在 R 中,如果我有一个函数

myfun<-function(ys, T, N, beta, gamma, sigma) {...}

其中 beta 和 gamma 是标量。

如果我有 ys、T、N 和 sigma 的固定值,但有一个 beta 值向量和一个 gamma 值向量,是否可以每次使用 beta 和 gamma 值的每种可能组合运行 myfun伽玛?

我正在考虑 lapply,但不知道如何指定要尝试的具有多个值的参数是否不是函数中的第一个参数,也不仅仅是一个参数。

或者我是否必须重写函数 myfun 以便 lapply 或类似的函数可以应用于它?

或者我必须使用循环?

感谢和问候!

【问题讨论】:

    标签: r


    【解决方案1】:

    让我们以 dt() 等方便的多参数函数为例。我们将(“mult”)-在“parallel”和(“const”)中提供2个参数-为另外两个提供固定值。使用 expand.grid 为多参数列表构建一个数据框,然后将其传递给具有适当名称的 mapply,并为其余参数使用 MoreArgs;

    gamma <- 1:3 
    beta <- 1:4
    gb.df <-expand.grid(gamma=gamma, beta=beta)
    mfun <- dt
    mapply ("mfun", x=gb.df$gamma, df=gb.df$beta, MoreArgs=list(ncp=1, log=FALSE) )
        [1] 0.26355595 0.14379745 0.07896827 0.31785177 0.17910975 0.08636815
        [7] 0.34118167 0.19555939 0.08572842 0.35411486 0.20513016 0.08355531
    

    【讨论】:

      【解决方案2】:

      查看所有组合部分的 mapply 和 Vectorize 函数以及 expand.grid。

      【讨论】:

        猜你喜欢
        • 2019-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        • 2019-10-08
        相关资源
        最近更新 更多