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

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

test(x=1,y=1)

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

最佳答案

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

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

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

关于R:更改省略号中的参数值并将省略号传递给其他函数,而无需使用list()和eval(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16321760/

10-13 00:28