9

我正在寻找一种通用方法来更改省略号内的参数值并将其传递给另一个函数。我知道一个丑陋的解决方案,它看起来像这样:

test <- function(...) {
  a <- list(...)
  a[['y']] <- 2
  return(eval(parse(text=paste0('identical(',paste(unlist(a),collapse=','),')'))))
}

test(x=1,y=1)

理想情况下,我想避免将 ... 转换为列表,然后使用 eval()。是否可以通过名称以某种方式引用内部的参数并更改其值?

4

1 回答 1

12

您必须解压缩...才能操作其内容。实际上,这里丑陋的一点是您的最后一行,可以简化为do.call(identical, a)

test <- function(...) {
  a <- list(...)
  a[['y']] <- 2
  do.call(identical, a)
}

test(x=1,y=1)
# [1] FALSE
于 2013-05-01T16:19:12.090 回答