r语言 - 在包函数中使用bang-bang(!!)和walrus(:=)的最佳实践



编写新包时的最佳实践是使用package::function()语法调用其他包函数并保持名称空间整洁。当我在包的函数中使用rlang的!!:=时,告诉R使用它们的等效操作是什么,因为它们没有函数形式?使用load_all()的事情似乎工作得很好,但我想确保他们不只是工作,因为其他东西加载rlang已经进入我的路径。

它们不需要导入:

From Advanced R

。!! 和! !在所有由rlang提供支持的引用函数中表现得特别,它们的行为就像真正的操作符,优先级相当于一元+和-。这需要在rlang内部做大量的工作,但这意味着您可以编写!!X + !!Y代替(!!x) + (!! Y)。

选自上一个问题

一旦rlang函数检测到这个"操作符";它以不同的方式来执行必要的整洁计算(这就是为什么操作符仅在rlang上下文中有用)…这就是为什么您只需要导入所需的rlang函数,因为处理!!在rlang内部,而不是一个单独的函数

https://stackoverflow.com/a/55764077/10725960

最新更新