繁体   English   中英

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

[英]R - how to identify which version (package) of a function is active/attached?

当我有多个包含一个函数的程序包时,如果我调用该函数,该如何确认哪个程序包的版本被调用(没有明确命名该程序包)? 我看过如何在加载包之前知道R中特定功能属于哪个包?

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

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

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

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

例如,我们可以加载dplyr ,该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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM