R-如何确定功能的哪个版本(包)处于活动状态/已附加?

时间:2019-04-14 05:45:03

标签: r package

当我有多个包含一个函数的程序包时,如果我调用该函数(不明确命名该程序包),如何确认该函数的哪个版本被调用? 我看过How to know to which package a particular function belongs to in R prior to package loading?

并缩小了(我的特殊问题是“ arima”)嫌疑犯的使用范围

help.search('arima', fields=c('name'), ignore.case=FALSE, agrep=FALSE)

在我的情况下,这将返回“ stats”和“ TSA”作为唯一可能的罪魁祸首,但这仍然不能告诉我哪个处于活动状态。 系统显然知道,或者无论何时调用函数,我们都必须明确。但是我们如何获得这些信息?

1 个答案:

答案 0 :(得分:2)

您可以使用conflicts(detail = TRUE)找出哪些功能发生冲突(被屏蔽)。这将按照search()路径的顺序返回冲突的程序包/函数的命名列表,这就是它们被调用的顺序。

作为示例,我们可以加载dplyr,它加载了一些与base冲突的功能。

library(dplyr)

# Create data.frame of conflicts and clean up.
conf <- conflicts(detail = TRUE)
conf.df <- data.frame(do.call(rbind, Map(cbind, conf, names(conf)))) 
names(conf.df) <- c("fn", "package") 
conf.df$package <- sub("package:", "", conf.df$package) 

# Aggregate packages by function - first package is the default when called.
aggregate(package ~ fn, conf.df, toString) 

         fn       package
1    body<- methods, base
2    filter  dplyr, stats
3 intersect   dplyr, base
4 kronecker methods, base
5       lag  dplyr, stats
6   setdiff   dplyr, base
7  setequal   dplyr, base
8     union   dplyr, base