当我有多个包含一个函数的程序包时,如果我调用该函数(不明确命名该程序包),如何确认该函数的哪个版本被调用? 我看过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”作为唯一可能的罪魁祸首,但这仍然不能告诉我哪个处于活动状态。 系统显然知道,或者无论何时调用函数,我们都必须明确。但是我们如何获得这些信息?
答案 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