Имя пакета для заданной функции в R [дубликат]

Возможное дублирование:
Как вы определяете пространство имен функции?

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

 Gavin Simpson11 мая 2012 г., 18:27
@ BenBolkerfind() & findFunction() не возвращайтолько чт имя пространства имен (следовательно, пакета). Их результаты нуждаются в дальнейшей обработке. Хэдли возвращает только имя пакета как символ. Я мог бы предпочесть это для написания функции или программирования, но для пользовательского кода другие подойдут.
 Ben Bolker11 мая 2012 г., 17:02
@ GavinSimpson: почему это лучше, чемfindFunction? (Я просто пытаюсь представить, объясняя студенту, почему они должны использоватьgetNamespaceName(environment(foo)) скорее, чемfindFunction(foo) - первое кажется немного волшебным, и если оно не имеет существенных преимуществ ...)
 Gavin Simpson11 мая 2012 г., 16:59
@ Andrie Хорошо заметили. Учитывая, что у всех пакетов теперь есть пространство имен, Лучшим решением для меня представляется «Ответ Хэдли» в ответах на ваши вопросы.

Ответы на вопрос(1)

Решение Вопроса

Возможно, есть лучшие решения, но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 пакет будет твоим другом.

 Nestorghh11 мая 2012 г., 17:19
а что с незагруженными пакетами?

Ваш ответ на вопрос