热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

从R包中删除/注销特定功能

如何解决《从R包中删除/注销特定功能》经验,为你挑选了1个好方法。

我在这里使用的术语可能不正确,请原谅我...

我遇到一种情况,一个程序包“覆盖”另一个程序包加载的同名函数,从而改变了函数的行为(中断)。

具体情况:

X <- data.frame ( y = rnorm(100), x1 = rnorm(100), x2 = rnorm(100) )

library(CausalImpact)
a <- CausalImpact::CausalImpact( X, c(1,75), c(76, 100) ) # works

library(bfast) # imports quantmod which loads crappy version of as.zoo.data.frame

b <- CausalImpact::CausalImpact( X, c(1,75), c(76, 100) ) # Error

我知道该错误来自该函数的两个版本as.zoo.data.frame。有问题的版本是由bfast从“ quantmod”包导入的(请参阅https://github.com/joshuaulrich/quantmod/issues/168)。不幸的是,他们的修补程序无法防止出现此错误。超级烦人。

我可以解决这个特定的问题,但是我想知道是否有一种通用方法可以从搜索路径中“注销”此功能变量。既不detach也不unloadNamespace删除有问题的函数(后相同的行为)。这里和这里都讨论了一个解释和类似的问题,但是我找不到一个通用的解决方案。例如,我宁愿只是删除此函数,而不是克隆并重新编写CausalImpact以处理此行为。



1> smingerson..:

从R 3.6.0开始,有一个名为“ conflicts.policy”的新选项可以在已建立的框架内进行处理。对于类似这样的小问题,您可以使用的新参数library()。如果您还没有使用3.6,最简单的解决方案可能是在需要时显式命名CausalImpact的名称,即CausalImpact::CausalImpact。那是一个大嘴巴,所以您可以causal_impact <- CausalImpact::CausalImpact使用该别名。

# only attach select
library(dplyr, include.Only= "select")
# exclude slice/arrange from being attached.
library(dplyr, exclude = c("slice", "arrange")) 

library(bfast, exclude = "CausalImpact") 应该可以解决您的问题。

附加意味着它们可以直接使用,而无需在其程序包前添加明确的前缀。在这两种情况下,类似的方法dplyr::slice都可以正常工作。

有关更多信息,请参见?library。此外,R-Core成员卢克·蒂尔尼(Luke Tierney)撰写了博客,解释了冲突策略的工作原理。你可以在这里找到


推荐阅读
author-avatar
Jackson-過時間
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有