【发布时间】:2021-09-02 16:04:05
【问题描述】:
如果我加载了多个定义同名函数的包,是否有一种简单的方法可以确定当前哪个版本的函数是活动的?比如,假设我已经加载了基础 R、tidyverse 和一堆时间序列包。我想要一个函数which_package("intersect"),它可以告诉我 intersect 函数的活动版本的包名称。我知道您可以返回查看安装软件包时收到的所有警告消息,但我认为这种手动搜索不仅乏味而且容易出错。
有一个函数here 可以满足我的要求,但它会为所有冲突生成一个表,而不是为一个函数生成一个值。我实际上会对此感到非常满意,并且也会接受类似的功能作为答案,但是我对给定功能的实现有疑问。在我的示例中,它插入了大量的空格和许多重复的包名称(例如 %>% 函数显示列出了 132 个包),使得输出难以阅读和使用。删除空白和重复项似乎应该很容易,而且我已经花了相当多的时间在我希望工作但对结果没有影响的各种方法上。
所以,举个很多冲突的例子:
install.packages(pkg = c("tidyverse", "fpp3", "tsbox", "rugarch", "Quandl", "DREGAR", "dynlm", "zoo", "GGally", "dyn", "ARDL", "bigtime", "BigVAR", "dLagM", "VARshrink")
lapply(x = c("tidyverse", "fable", "tsbox", "rugarch", "Quandl", "DREGAR", "dynlm", "zoo", "GGally", "dyn", "ARDL", "bigtime", "BigVAR", "dLagM", "VARshrink"),
library, character.only = TRUE)
【问题讨论】:
-
你试过
conflicts()吗?
标签: r package scoping conflicting-libraries