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

标签 r ellipsis

我想包装一个 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/

    相关文章:

    reactjs - Div 不会从 css-grid parent 推断最大宽度,省略号永远不会发生

    r - 无法在美国 map 中更改 R 中的颜色

    R foreach 不使用多核

    c++ - cpp : catch exception with ellipsis and see the information

    javascript - 当文本有省略号时如何显示 "show more"按钮?

    macros - Racket 宏省略语法

    html - 从表格聊天对话数据生成 html

    Rsqlite 在计算机关闭后使文件锁定

    r - 在R中按组应用滚动均值

    reactjs - 将svg文本修剪(带省略号)到给定的像素宽度