代码之家  ›  专栏  ›  技术社区  ›  unknown

使用lappy运行具有多个参数的函数

  •  0
  • unknown  · 技术社区  · 8 年前

    我有一个我想用各种参数运行的函数(请参见示例中的p\u space)。我可以使用for循环轻松地做到这一点。然而,由于我计划在以后使用并行处理,lapply似乎是一种可行的方法。有人知道我怎么做吗?我的尝试似乎根本不起作用!

    示例代码:

    as <- c(1,2)  # limit for K
    bs <- c(3,4)
    cs <- c(2,3)  # distribution of food sources ('random'/'clustered')
    
    p_space <- list ()
    for (a in as){
      for (b in bs){
        for (c in cs){
          p_space[[length(p_space)+1]] <- c(a,b,c)
        }
      }
    }
    made_up <- function(a, b, c){
      return(a * b * c)
    }
    

    我尝试这样做:

    lapply(p_space, made_up(i) p_space[[i]])
    

    我想要的输出是一个数据帧/矩阵/列表,其中包含p\U空间中所有参数集上的组合函数的结果。

    我将如何使用for循环执行此操作

     results <- list()
    
    for (a in as){
      for (b in bs){
        for (c in cs){
          results[[length(results) + 1 ]] <- c(a*b*c,a,b,c)
        }}}
    
    1 回复  |  直到 8 年前
        1
  •  1
  •   steveLangsford    8 年前

    可能会将一个向量传递给maked\u,然后提取a、b和c?

    made_up <- function(pvec){
      return(pvec[1]*pvec[2]*pvec[3])
    }
    
    lapply(p_space,made_up)