【问题标题】:apply function for multiple fixed parameter in RR中多个固定参数的应用函数
【发布时间】:2021-07-14 16:26:06
【问题描述】:

我创建了一个函数,比如 myfunc,它有 4 个参数,比如 para1para2para3para4。在我的问题中,para1 是矩阵,para2 是实数,para3 是向量,para4 是实数。 该函数返回一个列表。我已按以下方式定义该函数:

myfunc <- function(para1, para2, para3 = NULL, para4 = 100){
          Body ## Body of the function
          return(list("A" = a, "B" = b, "C" = c)
          }

现在,让lambda &lt;- c(2,3,6,10)。我正在尝试编写代码,以便函数输出以下内容:

myfunc(my_data, 2, my_vec, 100)
myfunc(my_data, 3, my_vec, 100)
myfunc(my_data, 6, my_vec, 100)
myfunc(my_data, 10, my_vec, 100)

这可以通过 for 循环轻松完成,但 我在想我们是否可以为此目的使用 applysapplytapply 函数所以,保持其他参数不变,我希望输出具有不同值(即lambda 中的值)para2 的相同函数。可以这样做吗?


我发现了一个非常相似的问题here,并看到了一些答案。我遵循了这些答案,但我遇到了一个错误。我写了以下代码:

myfunc <- function(para1, para2, para3 = NULL, para4 = 100) { Body }
para1 <- my_data
para3 <- my_vec
para4 <- 100
lambda <- c(2,3,6,10)

sapply(lambda, myfunc, para1=para1, para3, para4=para4)

我可以得到一些帮助吗?提前致谢。

【问题讨论】:

    标签: r apply self


    【解决方案1】:

    我们可以使用lapply 循环遍历 lambda

    lapply(lambda, function(x) myfunc(my_data, x, my_vec, 100))
    

    如果我们不使用 lambda 函数

    lapply(lamdba, myfunc, para1 = my_data, para3 = my_ec, para4 = 100)
    

    【讨论】:

    • 非常感谢!我使用了你写的第一行,它工作正常!你能告诉我你的第二行是什么意思吗(即“如果我们不使用 lambda 函数”)?
    • @Kolmogorov 我的意思是 lambda/匿名函数不是你定义的lambda。它是function(x) ..,即在不将其分配给对象的情况下动态创建的功能
    • 哦。明白了。谢谢!
    猜你喜欢
    • 2011-10-13
    • 2020-12-11
    • 2013-07-15
    • 1970-01-01
    • 2012-03-24
    • 2012-01-05
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多