R:更改省略号中参数的值,并将省略号传递给另一个函数,而不使用list()和eval()

时间:2013-05-01 16:02:37

标签: r function ellipsis

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

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

test(x=1,y=1)

理想情况下,我希望避免将...转换为列表,然后使用eval()。是否有可能以某种方式引用...中的名称并更改它的值?

1 个答案:

答案 0 :(得分:10)

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

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

test(x=1,y=1)
# [1] FALSE