相关疑难解决方法(0)

expand.grid和mapply的组合?

我想拿出一个变种mapply(称它为xapply现在),它结合了功能(在某种程度上)的expand.gridmapply.也就是说,对于一个功能FUN和参数列表L1,L2,L3,...的长度未知,但应该产生长度的列表n1*n2*n3(其中,ni是列表的长度i),这是施加的结果FUN到的元素的所有组合名单.

如果expand.grid用于生成列表而不是数据框列表,则可以使用它,但我记得列表可能是不一定适合数据框的事物列表.

如果有三个要扩展的列表,这个功能可以正常工作,但我很好奇一个更通用的解决方案.(FLATTEN未使用,但我可以想象这FLATTEN=FALSE将生成嵌套列表而不是单个列表...)

xapply3 <- function(FUN,L1,L2,L3,FLATTEN=TRUE,MoreArgs=NULL) {
  retlist <- list()
  count <- 1
  for (i in seq_along(L1)) {
    for (j in seq_along(L2)) {
      for (k in seq_along(L3)) {
        retlist[[count]] <- do.call(FUN,c(list(L1[[i]],L2[[j]],L3[[k]]),MoreArgs))
        count <- count+1
      }
    }
  }
  retlist
}
Run Code Online (Sandbox Code Playgroud)

编辑:忘了返回结果.有人可能通过combn在那里制作一份指数清单来解决这个问题......

r lapply

8
推荐指数
1
解决办法
1310
查看次数

标签 统计

lapply ×1

r ×1