Вопрос по r – Имя пакета для заданной функции в R [дубликат]
Возможное дублирование:
Как вы определяете пространство имен функции?
Я не знаю, как это сделать ... Как узнать имя пакета для определенной функции в R? Я хотел бы иметь функцию, которая дает имя функции, возвращает имя пакета, которому она принадлежит. Любое предложение
find()
& findFunction()
не возвращайтолько чт имя пространства имен (следовательно, пакета). Их результаты нуждаются в дальнейшей обработке. Хэдли возвращает только имя пакета как символ. Я мог бы предпочесть это для написания функции или программирования, но для пользовательского кода другие подойдут.
Gavin Simpson
findFunction
? (Я просто пытаюсь представить, объясняя студенту, почему они должны использоватьgetNamespaceName(environment(foo))
скорее, чемfindFunction(foo)
- первое кажется немного волшебным, и если оно не имеет существенных преимуществ ...)
Ben Bolker
Возможно, есть лучшие решения, ноfind("functionname")
, кажется, работает достаточно хорошо? Однако это работает только для загруженных пакетов.
> find("strwidth")
[1] "package:graphics"
> find("qplot")
character(0)
> library(ggplot2)
> find("qplot")
[1] "package:ggplot2"
>
(Если вам нужно сырое имя пакета, вы можете использоватьgsub("^package:","",results)
)
(Ответы на предыдущий вопрос, на который ссылается Андри, включают этот ответ; они не рассказывают оgsub
, и все они, похоже, разделяют проблему отсутствия не загруженных пакетов.)
Вот быстрый способ найти функции даже в незагруженных пакетах:
findAllFun <- function(f) {
h <- help.search(paste0("^",f,"$"),agrep=FALSE)
h$matches[,"Package"]
}
findAllFun("qplot")
## "ggplot2"
findAllFun("lambertW")
## "emdbook" "VGAM"
> findAllFun("xYplot")
## "Hmisc" "lattice"
Если вам нужно найти функции в неустановлен пакеты (то есть поиск CRAN), затемfindFn
отsos
пакет будет твоим другом.