Skip to Content
R管道操作符(Pipes)

管道操作符(Pipes)

右赋值

我们不支持使用右赋值(right-hand assignment)。

# Bad iris %>% dplyr::summarize(max_petal = max(Petal.Width)) -> results

这种用法与其他语言的实践差异很大,并且使得在代码中查找对象的定义位置变得更加困难。例如,搜索 foo <- 比同时搜索 foo <--> foo(可能跨行)要容易得多。

使用显式返回

不要依赖 R 的隐式返回(implicit return)特性。明确表达你要 return() 一个对象的意图会更好。

# Good AddValues <- function(x, y) { return(x + y) } # Bad AddValues <- function(x, y) { x + y }

限定命名空间(Qualifying Namespaces)

用户应为所有外部函数显式限定命名空间(namespace)。

# Good purrr::map()

我们不建议使用 @import Roxygen 标签将所有函数导入到 NAMESPACE 中。Google 拥有非常庞大的 R 代码库,导入所有函数会带来太多名称冲突的风险。

虽然使用 :: 会带来轻微的性能开销,但它使代码中的依赖关系更容易理解。此规则有一些例外情况:

  • 中缀函数(Infix function)(%name%)始终需要被导入。
  • 某些 rlang 代词(pronoun),特别是 .data,需要被导入。
  • 来自默认 R 包的函数,包括 datasetsutilsgrDevicesgraphicsstatsmethods。如果需要,你可以使用 @import 导入整个包。

导入函数时,请将 @importFrom 标签放在使用该外部依赖的函数上方的 Roxygen 头部中。

Last updated on