%||%运算符在R中的含义是什么?

时间:2017-08-17 17:01:29

标签: r

在下面的R代码片段(取自调试器)中,%||%运算符在第8行中意味着什么?

function (env = caller_env(), default = NULL) 
{
  out <- switch_type(env, environment = env, definition = , 
    formula = attr(env, ".Environment"), primitive = base_env(), 
    closure = environment(env), list = switch_class(env, 
      frame = env$env))

  out <- out %||% default

if (is_null(out)) {
    type <- friendly_type(type_of(env))
    abort(paste0("Can't extract an environment from ", type))
  }
  else {
    out
  }
}

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

%||%不是R语言的一部分。在GitHub上快速搜索所提供的代码会导致rlang包。

library(rlang)
`%||%`

导致:

function (x, y) 
{
    if (is_null(x)) 
        y
    else x
}
<environment: namespace:rlang>

换句话说,如果它不是NULL,则返回左侧,否则返回右侧。

此算子广泛用于tidyverse。