6

可能重复:
您如何确定函数的命名空间?

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

4

1 回答 1

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" 

If you need to find functions in non-installed packages (i.e. searching CRAN), then findFn from the sos package will be your friend.

于 2012-05-11T14:54:56.643 回答