美文网首页
R语言写函数时一个三个点的参数是干嘛的?

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

作者: 灵魂工具人 | 来源:发表于2020-12-24 15:00 被阅读0次

    我喜欢看开源库的源码,在看一些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(...)
    }
    

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

    相关文章

      网友评论

          本文标题:R语言写函数时一个三个点的参数是干嘛的?

          本文链接:https://www.haomeiwen.com/subject/dqymnktx.html