在不卸载包的情况下更改search()位置
我使用的代码依赖于两个冲突的包。我只想在短时间内优先考虑一个问题,我的计划是把它放到搜索的最前面()。然而,我不能只是卸载和重新加载。我试过了,但它会导致其他问题,在已经加载的包上运行在不卸载包的情况下更改search()位置,r,R,我使用的代码依赖于两个冲突的包。我只想在短时间内优先考虑一个问题,我的计划是把它放到搜索的最前面()。然而,我不能只是卸载和重新加载。我试过了,但它会导致其他问题,在已经加载的包上运行library不起作用 下面是一个示例(实际用例涉及非CRAN包): 现在如何在不拆离/卸载ggplot2的情况下将package:ggplot2移动到package:MASS之前 编辑 在我需要调用的函数中,比如说function1,有一个表达式可以进行进一步的调用。我无法编辑这些调用以追加: e、 g 但我不能
library
不起作用
下面是一个示例(实际用例涉及非CRAN包):
现在如何在不拆离/卸载ggplot2的情况下将package:ggplot2移动到package:MASS之前
编辑
在我需要调用的函数中,比如说function1
,有一个表达式可以进行进一步的调用。我无法编辑这些调用以追加:
e、 g
但我不能具体说明
mainFun::unchangeable
通过操纵公式对象,确实可以编辑不可更改的。但这并不理想,对于其他类型的对象,我需要一个更通用的解决方案
编辑2:
下面是一个例子,它显示了一个类似的问题
library(mgcv)
library(gam)
y <- rnorm(100)
x <- rnorm(100)
thisformula <- y ~ s(x)
gamgam <- gam(thisformula)
# s <- mgcv::s
mgcvgam <- mgcv::gam(thisformula)
取消注释行s可以使用:
引用特定包中的函数。例如,ggplot2::labs
将始终引用ggplot2
下的该函数,即使它被稍后加载的某个包屏蔽感谢您的响应。我应该说得更清楚些。在我需要调用的函数中,有一个表达式可以进行进一步的调用。我无法编辑这些调用以追加:
。我会编辑。这很奇怪:为什么你不能编辑一个函数?如果所有其他操作都失败,请复制函数源并修改本地版本。能否重新定义该函数,使其现在处于全局环境中?也就是说,在加载一个在ggplot2
之后有labs
的包之后,您可以重新定义函数以指向ggplot2
版本:labs@CarlWitthoft,因为函数随包而来。请参见示例。@ilir在本例中有效,但在我正在处理的更一般的情况下无效,并且似乎无法将其最小化为mwe。我宁愿避免重新定义。那么为什么不mainFun(mainFun::unchangeable)
?我认为你需要发布实际的代码和屏蔽函数来得到一个合适的答案。谢谢你的想法。不幸的是,我不能把它简化为一个最小的例子,代码中包含了一位教授的代码,他觉得自己的代码在网上并不舒服(尽管我做了尝试)。我仍然对是否可以更改搜索顺序的一般问题感兴趣。
mainFun(unchangeable)
mainFun::unchangeable
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