이름

2012-05-11 2 views
6

이 가능한 중복 :
How do you you determine the namespace of a function?이름

내가이 작업을 수행하는 방법을 모르겠어요 ... 당신은 어떻게 패키지 이름을 알 수 있습니까 R의 특정 함수에 대해? 함수의 이름이 주어진 함수를 갖고 싶습니다, 소유하고있는 패키지의 이름을 반환합니다. 어떠한 제안?

+0

@Andrie 잘 찾아 냈습니다. 모든 패키지가 이제 네임 스페이스를 가지고 있다고 가정 할 때, 당신이 링크하는 Q & A에서 hadley의 답변이 가장 좋은 해결책이라고 생각합니다. –

+0

@GavinSimpson : 왜 'findFunction'보다 나은가요? (필자는 학생들에게'findFunction (foo)'보다는'getNamespaceName (environment (foo))'를 사용해야하는 이유를 설명하려고 상상해 보려고합니다. 전자는 조금 마법처럼 보입니다. 장점 ...) –

+1

@BenBolker'find()'&'findFunction()'don; t * 그냥 * 네임 스페이스 (따라서 패키지) 이름을 반환합니다. 그들의 결과는 추가 처리가 필요합니다. Hadley는 패키지 이름을 문자로 반환합니다. 나는 함수 나 프로그래밍을 작성하는 것이 더 좋지만, 사용자 코드는 다른 것들도 괜찮습니다. –

답변

6

더 나은 해결책이있을 수 있지만 find("functionname")은 상당히 잘 작동하는 것 같습니다. 그러나로드 된 패키지에서만 작동합니다. Andrie로 연결된 이전 질문에

> 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 검색), sos 패키지의 findFn이 귀하의 친구가됩니다.

+0

및로드되지 않은 패키지는 어떻게됩니까? – Nestorghh

관련 문제