2011-09-21 75 views
15

在R中,一個非常簡潔的功能是可以在工作區中以對象的形式訪問函數的源代碼。如何訪問R中的幫助/文檔.rd源文件?

因此,如果我想知道例如grep()的源代碼,我可以在控制檯中輸入grep,然後閱讀代碼。

同樣,我可以通過在控制檯中輸入?grep來閱讀grep的文檔。

問題:如何獲取函數文檔的源代碼?換句話說,我在哪裏可以找到.rd文件?

我發現學習寫得很好的代碼的來源是學習成語的絕佳方式。現在我想研究如何爲一些非常特殊的情況編寫文檔。我一直無法找到R安裝中任何基本R功能的文檔文件。也許我一直在尋找錯誤的地方。

+0

有專門致力於統計和分析http://stats.stackexchange.com – robermorales

+0

堆棧網站,我從來沒有看到這種情況,但如果有一種方法來提取RDA Rd文件這將是很好文件。如果你想擁有.Rd文件,你可以隨時下載一個包(或者在基本包,R源的情況下)。 –

+3

@robermorales是的,我知道這一點,謝謝。但是這是一個編程問題,而不是一個統計分析問題,所以CrossValidated上的話題將會成爲焦點話題。 – Andrie

回答

26

看來你可以從已安裝的R中提取Rd來源。我正在使用R-devel(2011-09-05 r56942)。

獲取基礎包的Rd數據庫。

library(tools) 
db <- Rd_db("base") 

在路DB的名稱搜索 「grep.Rd」,例如:

grep("grep.Rd", names(db), value = TRUE) 
[1] "d:/murdoch/recent/R64/src/library/base/man/agrep.Rd" 
[2] "d:/murdoch/recent/R64/src/library/base/man/grep.Rd" 

得到公正的grep爲五路對象。

db[grep("/grep.Rd", names(db))] 
$`d:/murdoch/recent/R64/src/library/base/man/grep.Rd` 
\title{Pattern Matching and Replacement} 
\name{grep} 
\alias{grep} 
\alias{grepl} 
\alias{sub} 
\alias{gsub} 
\alias{regexpr} 
\alias{gregexpr} 
\alias{regexec} 
\keyword{character} 
\keyword{utilities} 
\description{ 
\code{grep}, \code{grepl}, \code{regexpr} and \code{gregexpr} search 
for matches to argument \code{pattern} within each element of a 
character vector: they differ in the format of and amount of detail in 
the results. 

\code{sub} and \code{gsub} perform replacement of the first and all 
matches respectively. 
}\usage{ 
... 
... 

有用於獲取從路對象的組件的工具,這樣你就可以優化搜索關鍵字或名稱,請參閱?Rd_db例子和嘗試。

lapply(db, tools:::.Rd_get_metadata, "name") 
+0

+1這很好,謝謝。 – Andrie