【发布时间】:2018-12-05 16:40:24
【问题描述】:
我在 github 上做了一个私有的 R 包。
我经常使用!!rlang::sym(function_argument) 来接受来自函数的输入并与 tidyverse 一起使用。
例如:
example_function = function(x){
new = mtcars %>% arrange(desc(!!rlang::sym(x))
return(new)
}
example_function('mpg')
所以我把它上传到了一个私人 github,然后如果我去安装它 - devtools::install_git('myaccount/myrepo')
当我查看函数中的底层代码时
myinstalled_package::example_function
无论我有!!rlang::sym,它都会显示为!(!rlang::sym。该函数实际上仍然有效,但同样,当我检查代码时它没有。我在 github 上查看,那里的代码是正确的,只是当我将它下载到我的计算机时,我才进行了这种非常烦人的转换。
我还看到了其他类似的变化,例如我将 !!each_var := 转换为 :=(!(!each_var),
是否有办法阻止这种情况或为什么会发生这种情况?
【问题讨论】:
-
“当我检查它没有检查的代码时”是什么意思?
-
@Aurèle:可能值得将解决方案解释为正式答案,以便它可以被赞成和接受,从而将问题从“未回答”类别中删除。