美文网首页软件
R语言中%||%是什么意思?

R语言中%||%是什么意思?

作者: 生信交流平台 | 来源:发表于2020-09-27 15:39 被阅读0次

    不知道大家有没有在R代码中见到过这样的运算符号%||%,看上去有点像或,却又不是。

    %||%实际上是rlang这个包中的一个函数,我们来看看它的定义

    
    rlang::`%||%`
    
    function (x, y)
    
    {
    
        if (is_null(x))
    
            y
    
        else x
    
    }
    
    

    看到这个定义我相信大多数人都能够明白了,也就是这个函数有两个参数,当第一个参数x不为NULL的时候,返回的值就是x,如果x为NULL那么就会返回第二个参数y的值。有点三目运算符的味道。我们来看一个具体的例子

    
    library(rlang)
    
    1 %||% 2
    
    #[1] 1
    
    NULL %||% 2
    
    #[1] 2
    
    

    其实在其他的一些R包里面这个函数用到的也很多,比如ggplot2这个包里面就用到了

    
        function (data, params)
    
    {
    
        hjust <- params$hjust %||% 0.5
    
        vjust <- params$vjust %||% 0.5
    
        w <- resolution(data$x, FALSE)
    
        h <- resolution(data$y, FALSE)
    
        datax - w * (1 - hjust)
    
        datax + w * hjust
    
        datay - h * (1 - vjust)
    
        datay + h * vjust
    
        data
    
    }
    
    

    还有分析单细胞测序数据的Seurat这个包里面也用到了

    
    DimHeatmap <- function(
    
      object,
    
      dims = 1,
    
      nfeatures = 30,
    
      cells = NULL,
    
      reduction = 'pca',
    
      disp.min = -2.5,
    
      disp.max = NULL,
    
      balanced = TRUE,
    
      projected = FALSE,
    
      ncol = NULL,
    
      fast = TRUE,
    
      raster = TRUE,
    
      slot = 'scale.data',
    
      assays = NULL,
    
      combine = TRUE
    
    ) {
    
      ncol <- ncol %||% ifelse(test = length(x = dims) > 2, yes = 3, no = length(x = dims))
    
      plots <- vector(mode = 'list', length = length(x = dims))
    
      assays <- assays %||% DefaultAssay(object = object)
    
      disp.max <- disp.max %||% ifelse(
    
        test = slot == 'scale.data',
    
        yes = 2.5,
    
        no = 6
    
      )
    
    

    R语言中%||%是什么意思?

    相关文章

      网友评论

        本文标题:R语言中%||%是什么意思?

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