R中给定函数的包的名称

时间:2012-05-11 14:52:26

标签: r

  

可能重复:
  How do you you determine the namespace of a function?

我不知道怎么做...你怎么知道R中某个功能的包名?我想有一个给定函数名称的函数,返回拥有它的包的名称。有什么建议吗?

1 个答案:

答案 0 :(得分:7)

可能有更好的解决方案,但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将成为您的朋友。