gpt4 book ai didi

R:如何使用带有省略号的replicate() ...?

转载 作者:行者123 更新时间:2023-12-04 11:24:19 27 4
gpt4 key购买 nike

我想包装一个 replicate()使用省略号调用函数。说:

  • fo()有 2 个参数:fo <- function(x, times) x * times
  • replicate()将按名称传递第一个,第二个使用 ... .rep_it <- function(N, ...) replicate(N, fo(x=3, ...))

  • 事实证明,而不是传递第二个参数,replicate 似乎传递了 0 个值?

    fo <- function(x, times)  x * times
    rep_it <- function(N, ...) replicate(N, fo(x=3, ...))
    rep_it(5, times = 4) # should return 5 times 3 * 4 = 12
    #> [1] 0 0 0 0 0

    这似乎是由于省略号!如果我要命名参数,那就没问题了:

    rep_it2 <- function(N, times) replicate(N, fo(x=3, times)) 
    rep_it2(5, times = 4)
    #> [1] 12 12 12 12 12

    为什么会发生这种情况,如何处理?我看到 replicate()里面有一个相当复杂的调用功能: eval.parent(substitute(function(...) expr)) ,但我真的不明白那里发生了什么......

    谢谢!

    最佳答案

    我们捕获了 ...并传入 replicate

    fo <- function(x, times)  x * times
    rep_it <- function(N, ...) {
    args <- unlist(list(...), use.names = FALSE)
    replicate(N, fo(x = 3, times = args))
    }


    rep_it(5, times = 4)
    #[1] 12 12 12 12 12

    编辑:根据@Julius Vainora 的建议修改

    关于R:如何使用带有省略号的replicate() ...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54077899/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com