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

从github下载/安装包转换底层R代码,r,devtools,rlang,tidyeval,R,Devtools,Rlang,Tidyeval,我在github上有一个我制作的私有R包 我利用!!rlang::symfunction_参数,用于接受函数的输入并与tidyverse一起使用 例如: example_function = function(x){ new = mtcars %>% arrange(desc(!!rlang::sym(x)) return(new) } example_function('mpg') 所以我把它上传到一个私有的github,然后如果我去安装它-devtools::install_g

我在github上有一个我制作的私有R包

我利用!!rlang::symfunction_参数,用于接受函数的输入并与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
它显示为!!不管我在哪里都是如此!!兰格::符号。这个函数实际上仍然可以工作,但是当我检查代码时,它不能工作。我查看了github,代码在那里是正确的,只是当我将它下载到我的计算机上时,我才进行了这种非常烦人的转换

我也看到了其他类似的变化,比如如果我有!!每个变量:=正在转换为:=!!每个变量

有没有办法阻止这种情况发生或者为什么会发生这种情况?

引用一个:

通过查找显示R代码的方式仅由R处理 内部布局代码

建议您通过以下方式安装包含源代码引用的软件包: 将选项keep.source=TRUE,keep.source.pkgs=TRUE设置为 确保源引用可用。如果是,你会发现 输出与原始源文件中的输出完全相同,例如

> lookup::lookup(dplyr:::rename.data.frame)
dplyr:::rename.data.frame [S3 method, closure] dataframe.R#L122-125
function(.data, ...) {
  vars <- rename_vars(names(.data), !!! quos(...))
  select_impl(.data, vars)
}
<environment: namespace:dplyr>

// c++ source: src/select.cpp#L79-L86
DataFrame select_impl(DataFrame df, CharacterVector vars) {
  check_valid_colnames(df);
  if (is<GroupedDataFrame>(df)) {
    return select_grouped(GroupedDataFrame(df), SymbolVector(vars), SymbolVector(vars.names()));
  } else {
    return select_not_grouped(df, SymbolVector(vars), SymbolVector(vars.names()));
  }
}

因此,阻止这种情况发生的一种方法可能是optionKeep.source=TRUE,keep.source.pkgs=TRUE。

当我检查代码时,你的意思是什么?请看我创建的一个类似问题的答案:@Aurèle:可能值得将该解决方案解释为正式答案,以便它可以被升级和接受,从而将问题从未回答的类别中删除。