首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从github下载/安装包转换底层R代码

从github下载/安装包转换底层R代码
EN

Stack Overflow用户
提问于 2018-12-05 16:40:24
回答 1查看 43关注 0票数 0

我在github上有一个私人的R包,我已经做了。

我经常使用!!rlang::sym(function_argument)来接受函数的输入,并与tidyverse一起使用。

例如:

代码语言:javascript
复制
example_function = function(x){

new = mtcars %>% arrange(desc(!!rlang::sym(x))

return(new)
}
 example_function('mpg')

所以我把这个上传到一个私有的github,然后如果我要安装它- devtools::install_git('myaccount/myrepo')

当我查看函数中的底层代码时

代码语言:javascript
复制
myinstalled_package::example_function

它显示为!(!rlang::sym,无论我在哪里有!!rlang::sym。这个函数实际上仍然有效,但是,当我检查代码时,它没有工作。我查看了github,代码是正确的,就在我把它下载到我的计算机上时,我才有了这个非常烦人的转换。

我还看到了其他类似的更改,比如我将!!each_var :=转换为:=(!(!each_var),

有什么办法阻止这件事吗?为什么会发生这种事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-18 10:11:03

引用吉姆·海斯特()在GitHub上的回答

R代码通过查找显示的方式完全由R的内部布局代码处理。 建议您通过设置options("keep.source" = TRUE, "keep.source.pkgs" = TRUE)来安装具有源引用的包,以确保源引用可用。如果它们是,您将发现输出与原始源文件中的完全相同,例如查找::dplyr:::rename.data.frame dplyr:::rename.data.frame S3方法,闭包dataframe.R#L 122-125函数(.data,.){ vars <- rename_vars(名称(.data),!!(.)select_impl(.data,vars) }< namespace:dplyr> // c++源: src/select.cpp#L79-L86 DataFrame select_impl(DataFrame df,CharacterVector vars) { check_valid_colnames(df);if (is(df)) { return select_grouped(GroupedDataFrame(df),SymbolVector(vars),SymbolVector(vars.names();

因此,阻止这种情况发生的方法可能是options("keep.source" = TRUE, "keep.source.pkgs" = TRUE)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53636886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档