管道操作符(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 包的函数,包括
datasets、utils、grDevices、graphics、stats和methods。如果需要,你可以使用@import导入整个包。
导入函数时,请将 @importFrom 标签放在使用该外部依赖的函数上方的 Roxygen 头部中。
Last updated on