簡體   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