2014-04-19 25 views
4

比方說,我打開R文件時,我使用了回來的方式。在頁面頂部,我看到一個加載的庫,但我不記得它有什麼功能。所以我想我自己:嗯,我想知道這個長文件庫在哪裏使用了這個庫?使用包搜索R文件

有沒有辦法列出在特定文件中使用給定包中的函數?

+0

對,我可以使用help(package = target)並列出所有的函數,然後逐個CTRL + F。但是,如果功能很多,可能需要很長時間。我希望有一種方法可以自動執行此操作。 [編輯:在這裏我正在迴應現在刪除的評論,但我會留下澄清) – user1754606

回答

5

當然,還有其他方法可以做到這一點,但如果你能得到的程序包的功能列表,你可以結合readLines(讀劇本入R作爲字符),grepl(檢測場比賽),並sapply。我將抓取這些函數的方式是使用pacman包中的p_funs。 (全面披露:我是其中一位作者)。

這裏是我已經保存爲「test.R」

library(ggplot2) 

x <- rnorm(20) 
y <- rnorm(20) 
qplot(x, y) 

summary(x) 

一個示例腳本,這裏是我發現如果你沒有這些功能用於

script <- readLines("test.R") 
funs <- p_funs(ggplot2) 
out <- sapply(funs, function(input){any(grepl(input, x = script))}) 
funs[out] 
#[1] "ggplot" "qplot" 

會話想要安裝pacman,您可以使用任何其他方法來獲取軟件包中的函數列表。你可以用

funs <- objects("package:ggplot2") 

代替,你基本上會得到相同的答案。

請注意,您可能會獲得比文件中實際存在的更多匹配項 - 請注意,ggplot函數實際上並不在我的腳本中,但字符串「ggplot」在library(ggplot2)中。因此,在初始掃描文件後,您可能仍需要進行一些額外的挖掘。

+0

嗨,感謝您的答覆。我希望這不是不恰當的地方問:爲什麼pacman不在CRAN上? – user1754606

+0

主要是因爲在上傳之前我還想知道一些我知道的錯誤(這些錯誤不一定很小)。泰勒和我計劃在二月份發佈,但我們都很忙,對pacman的工作已經放慢了。隨着學期即將結束,我希望我們很快能夠在CRAN上獲得它。 – Dason

+0

@ user1754606剛剛向CRAN提交了pacman。應在幾天內提供。 – Dason