19

在 R 中,一个非常简洁的特性是函数的源代码可以作为工作区中的对象访问。

因此,如果我想知道例如的源代码,grep()我可以简单地grep在控制台中输入并阅读代码。

同样,我可以通过在控制台中grep输入来阅读文档。?grep

问题:如何获取函数文档的源代码?换句话说,我在哪里可以找到 .rd 文件?

我发现研究编写良好的代码的源代码是学习习语的绝佳方式。现在我想研究如何为一些非常具体的案例编写文档。我无法在我的 R 安装中找到任何基本 R 函数的文档文件。也许我一直在寻找错误的地方。

4

1 回答 1

34

看来您可以从已安装的 R 中提取 Rd 源。我正在使用 R-devel (2011-09-05 r56942)。

获取基础包的 Rd 数据库。

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

在 Rd 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 的 Rd 对象。

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 对象中获取组件,因此您可以将搜索细化为关键字或名称,请参阅 ?Rd_db 中的示例并尝试此操作。

lapply(db, tools:::.Rd_get_metadata, "name")
于 2011-09-21T07:54:24.910 回答