2015-08-15 78 views
7

我想將R軟件包的文檔打印到控制檯。這樣做將R軟件包功能索引打印到控制檯

utils:::.getHelpFile(help("print")) 

的作品就好了,但是當我嘗試

utils:::.getHelpFile(help(package="MASS")) 

我得到一個錯誤,指出:

Error in dirname(file) : a character vector argument expected 

所以我的問題是:我怎麼能打印文檔的R包(即help(package="package_name"))到控制檯?提前致謝。

+0

您正在詢問幫助文件的目錄(索引)。那是你要的嗎? –

+0

嗨@RichardScriven。是的,包的索引。 – petobens

+0

@RichardScriven它不是基本相同的東西,因爲使用'ls()'我需要首先加載包並且ii)我沒有簡要描述函數的功能。 – petobens

回答

7

help(package = "MASS")帶你到INDEX文件爲MASS包(根據您的設置),在瀏覽器窗口中打開。要將該文件讀入控制檯,我們可以使用system.file()獲取文件路徑,然後使用readLines()將其作爲字符向量讀取。

## get the complete file path for the index file of the MASS package 
f <- system.file("INDEX", package = "MASS") 
## read it 
readLines(f) 
# [1] "Functions:"         
# [2] "=========" 
# [3] "" 
# [4] "Null     Null Spaces of Matrices" 
# [5] "addterm     Try All One-Term Additions to a Model" 
# [6] "anova.negbin   Likelihood Ratio Tests for Negative Binomial GLMs" 
# ... 
# ... 

或者我們可以把它包裝cat()得到一個更清楚地版本

cat(readLines(f), sep = "\n") 
# Functions: 
# ========= 
# 
# Null     Null Spaces of Matrices 
# addterm     Try All One-Term Additions to a Model 
# anova.negbin   Likelihood Ratio Tests for Negative Binomial GLMs 
# ... 
# ... 

或者,你可以用

readLines(file.path(find.package("MASS"), "INDEX")) 

得到同樣的結果。最後,如果你想知道在html瀏覽器頂部出現的包描述和新聞鏈接,可以通過

packageDescription("MASS") 
news(package = "MASS") 
+0

'help(package =「foo」)'並不總是打開瀏覽器窗口。這取決於你的設置(參見'help'中的'help_type'參數)。另外,軟件包中沒有「索引」文件。該文件是「INDEX」,因此您的代碼在文件名區分大小寫的系統上不起作用。 –

+0

謝謝@JoshuaUlrich - 我想知道爲什麼'index'在我的機器以及'INDEX'上工作。感謝澄清 –

3

utils:::.getHelpFile(help(package="MASS"))不起作用,因爲help(pacakge="MASS")返回packageInfo類對象,而不是help_files_with_topic類對象(這與其他一些屬性的完整文件路徑)。

這是我能想出的最簡單的事情:

cat(paste(format(help(package="MASS", help_type="text")), collapse="\n"),"\n") 

基本上,你format輸出從。然後paste導致一個單一的字符串,通過換行合併在一起。然後在該結果上致電cat