首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用省略号(...)将参数传递给furrr::future_map

使用省略号(...)将参数传递给furrr::future_map
EN

Stack Overflow用户
提问于 2020-08-31 10:46:10
回答 1查看 313关注 0票数 0

我正在尝试使用R中的furrr::future_pmap在另一个函数内的函数调用中替换purrr::pmap

目前,我已经设置了它,所以pmap正在使用省略号...传递其他参数,但是当我尝试使用future_pmap传递其他参数时,我得到了未使用的参数错误(参见下面的示例)。我从这里的注释、passing ellipsis arguments to map function purrr package, R和其他以前的研究中了解到,要让省略号与pmap一起工作,您需要使用function(x,y,z) blah(x,y,z,...)而不是~blah(..1,..2,..3),但同样的方法似乎不适用于future_map。有没有其他的秘诀可以让它工作呢?

我已经创建了一个非常简单的reprex,显然我的实际函数在future_pmap中运行更有意义

代码语言:javascript
复制
library(purrr)

library(furrr)
#> Loading required package: future
plan(multiprocess)

xd <- list(1, 10, 100)
yd <- list(1, 2, 3)
zd <- list(5, 50, 500)


sumfun <- function(indata, otherdata){
  out <- sum(c(indata, otherdata))
  
  return(out)
  
}



test_fun_pmap_tilde <- function(ind, ...){
  
  return( pmap(ind, ~sumfun(c(..1,..2,..3), ...)))
  
}
test_fun_pmap <- function(ind, ...){
  
  return( pmap(ind, function(x,y,z) sumfun(c(x,y,z), ...)))
  
  
}


test_fun_future_pmap <- function(ind, ...){
  
  return( future_pmap(ind, function(x,y,z) sumfun(c(x,y,z), ...)))
  
  
}

#doesn't work as need to use function(x,y,z) instead of tildes
test_fun_pmap_tilde(list(xd, yd, zd), otherdata = c(100,1000))
#> Error in sumfun(c(..1, ..2, ..3), ...): unused arguments (.l[[2]][[i]], .l[[3]][[i]])

#this one works
test_fun_pmap(list(xd, yd, zd), otherdata = c(100,1000))
#> [[1]]
#> [1] 1107
#> 
#> [[2]]
#> [1] 1162
#> 
#> [[3]]
#> [1] 1703

#but using future_pmap it doesn't work
test_fun_future_pmap(list(xd, yd, zd), otherdata = c(100,1000))
#> Error in (function (x, y, z) : unused argument (otherdata = c(100, 1000))
Created on 2020-08-31 by the reprex package (v0.3.0)
EN

回答 1

Stack Overflow用户

发布于 2020-08-31 12:22:00

好吧,我已经找到了一种工作的方法。显然,我需要3组省略号,而不是1个。

代码语言:javascript
复制
test_fun_future_pmap <- function(ind, ...){
  
  return( future_pmap(ind, function(x,y,z,...) sumfun(c(x,y,z), ...),...))
  
  
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63664109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档