R语言写函数时一个三个点的参数是干嘛的?

我喜欢看开源库的源码,在看一些R包的源码的时候,经常会碰到函数里面有一个名称是三个点(即省略号,专业术语叫ellipsis,姑且翻译为省略参数吧)的参数。例如,limma包的一个函数是这样写的:

avereps.default <- function(x,ID=rownames(x),...)

这个参数的作用是啥呢?我们来试验一下:

f1 <- function (x, y, ...) {
  z <- list(...)
  print(z)
}
f1(1, 2, 3, 4, 5)

会输出:

[[1]]
[1] 3

[[2]]
[1] 4

[[3]]
[1] 5

看到没有,其实就是把1、2后面的参数都放到省略参数的意思。

那这个参数一般怎么用呢?

省略参数的使用场景一般有两个:

  1. 参数不固定长度

例如:

my_sum <- function (...) {
  # 只为了演示如何使用
  # 现实中不能这么写
  total <- 0
  for (i in list(...)) {
    total <- total + i
  }
  return(total)
}
my_sum(1, 2, 3)
my_sum(1, 2, 3, 4)
  1. 兼容其他函数的参数

如果我的函数里面要调用其他函数,如果只是直接往这个函数里面传的话,可以使用省略参数。例如:

my_print <- function (...) {
  print(...)
}

一般第二种使用场景用的比较多。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容