R - как определить, какая версия (пакет) функции активна / прикреплена? - PullRequest
0 голосов
/ 14 апреля 2019

Когда у меня есть несколько пакетов, содержащих функцию, как я могу подтвердить, какая версия функции пакета вызывается, если я ее вызываю (без явного присвоения имени пакету)?Я посмотрел на Как узнать, к какому пакету относится конкретная функция в R до загрузки пакета?

и сузил (моей конкретной проблемой была "арима") подозреваемые, использующие

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

В моем случае это возвращает «stats» и «TSA» в качестве единственно возможных виновников, но это все равно не говорит мне, кто активен.Система, очевидно, знает, или мы должны были бы быть явными, когда бы мы ни вызывали функции.Но как мы можем получить эту информацию?

1 Ответ

2 голосов
/ 14 апреля 2019

Вы можете узнать, какие функции находятся в конфликте (будучи замаскированными), используя conflicts(detail = TRUE). Это возвращает именованный список пакетов / функций, находящихся в конфликте, в порядке пути search(), который является порядком, в котором они будут вызываться.

Например, мы можем загрузить dplyr, который загружает некоторые функции, конфликтующие с базой.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...