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

6

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

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

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

Ваш Ответ

1   ответ
7

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

а что с незагруженными пакетами? Nestorghh

Похожие вопросы