R - 如何识别功能的哪个版本(包)是活动/附加的?
Posted
技术标签:
【中文标题】R - 如何识别功能的哪个版本(包)是活动/附加的?【英文标题】:R - how to identify which version (package) of a function is active/attached? 【发布时间】:2019-09-04 10:32:59 【问题描述】:当我有多个包含一个函数的包时,如果我调用它(没有明确命名包),我如何确认调用了哪个包的函数版本? 我看过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”作为唯一可能的罪魁祸首,但这仍然不能告诉我哪个是活跃的。 系统显然知道,否则我们在调用函数时必须明确。但是我们如何获得这些信息呢?
【问题讨论】:
How to find out which package version is loaded in R?的可能重复 不,我不是在寻找包版本,我在寻找包含特定功能的已加载包的列表,特别是,哪个正在屏蔽其他功能。 @H_1 的答案(使用 "conflicts(detail=T") 是我正在寻找的通用版本,尽管能够向该命令添加特定函数以获得更有针对性的结果会很好。跨度> 【参考方案1】:您可以使用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
【讨论】:
以上是关于R - 如何识别功能的哪个版本(包)是活动/附加的?的主要内容,如果未能解决你的问题,请参考以下文章
活动包缺少附加功能,即使它们应始终添加到 newIntance 方法中