我使用的代码依赖于两个冲突的包。我想在短时间内给予一个优先级,我的计划是将它移到搜索()的前面。但是,我无法卸载和重新加载。我试过了,它会导致其他问题,并且在已经加载的包上运行library
不起作用。
以下是一个示例(真实用例涉及非CRAN包):
library(ggplot2)
library(MASS)
> search()
[1] ".GlobalEnv" "package:MASS" "package:ggplot2"
[4] "package:stats" "package:graphics" "package:grDevices"
[7] "package:utils" "package:datasets" "package:methods"
[10] "Autoloads" "package:base"
我现在如何移动包:ggplot2在包之前:MASS没有分离/卸载ggplot2?
修改
在我需要调用的函数内部,比如function1
,有一个表达式可以进一步调用。我无法修改这些调用以追加::
。
e.g。
unchangeable <- function1("abc") ~ function2("def")
假设mainFun
是我想要呼叫的人。我能做到
mainFun(unchangeable)
但我无法指定
mainFun::unchangeable
确实可以通过操纵公式对象来编辑unchangeable
。但这并不理想,我需要一个更通用的解决方案来处理其他类型的对象。
EDIT2:
这是一个例子,它显示了一个类似的问题。
library(mgcv)
library(gam)
y <- rnorm(100)
x <- rnorm(100)
thisformula <- y ~ s(x)
gamgam <- gam(thisformula)
# s <- mgcv::s
mgcvgam <- mgcv::gam(thisformula)
这给了我错误
Error: $ operator is invalid for atomic vectors
取消注释行s <- mgcv::s
解决了这种情况下的问题。但在我更一般的情况下,它并没有,并且无论如何它似乎是一个黑客。如何在mgcv::gam
中首先查找mgcv
内调用的所有函数?
答案 0 :(得分:1)
您可以使用::
参考特定包中的功能。例如,ggplot2::labs
将始终引用ggplot2
下的该函数,即使它被某些后续加载的软件包掩盖了