可能重複:
How do you you determine the namespace of a function?一個包中的R給定函數的名稱
我不知道如何做到這一點?你怎麼知道包名對於R中的某個函數?我想要一個給定函數名稱的函數,返回擁有它的包的名稱。任何建議?
可能重複:
How do you you determine the namespace of a function?一個包中的R給定函數的名稱
我不知道如何做到這一點?你怎麼知道包名對於R中的某個函數?我想要一個給定函數名稱的函數,返回擁有它的包的名稱。任何建議?
可能有更好的解決方案,但find("functionname")
似乎工作得很好?但是,它只適用於加載的包。
> find("strwidth")
[1] "package:graphics"
> find("qplot")
character(0)
> library(ggplot2)
> find("qplot")
[1] "package:ggplot2"
>
(如果需要包裝的原始名稱可以使用gsub("^package:","",results)
)
(由Andrie聯繫前面的問題的答案包括這樣的回答,他們不給一點關於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
@Andrie很好看。鑑於所有軟件包現在都有一個命名空間,hadley在你連接的Q&A中的回答讓我覺得是最好的解決方案。 –
@GavinSimpson:爲什麼比'findFunction'好? (我試圖想象給學生解釋爲什麼他們應該使用'getNamespaceName(environment(foo))'而不是'findFunction(foo)' - 前者似乎有點神奇,如果它沒有顯着優點...) –
@BenBolker find()'&'findFunction()'不要返回*只是*名稱空間(因此包)名稱。其結果需要進一步處理。哈德利只是將包名稱作爲角色返回。我可能更喜歡用於編寫函數或編程,但對於用戶代碼,其他人都可以。 –