如何在R中访问帮助/文档的.rd源文件?

20

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

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

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

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

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


有一个专门致力于统计和分析的堆栈网站 http://stats.stackexchange.com - robermorales
我从未见过这样的操作,但如果有一种方法可以从rda文件中提取Rd文件,那将是很好的。如果您想要.Rd文件,您可以随时下载一个包(或在基本包的情况下,下载R源代码)。 - Roman Luštrik
3
是的,我知道,谢谢你。但这是一个编程问题,不是统计分析问题,所以在CrossValidated上会不合适。 - Andrie
你的意思是想要代码从已安装的R构建中提供Rd源吗?我只是去R外部的源,例如[R sources]\src\library\base\man\grep.Rd。 - mdsumner
@mdsumner 如果能给我这个代码,那就是第一名了。但是感谢您提供正确文件夹的链接来查找文档文件。(显然我的操作系统文件搜索技能需要一些磨练!) - Andrie
1个回答

36

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

获取基础包的Rd数据库。

library(tools)
db <- Rd_db("base")
在Rd数据库的名称中搜索“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")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接