Как получить доступ к справке / документации .rd исходных файлов в R? - PullRequest
15 голосов
/ 21 сентября 2011

В R одна очень полезная особенность заключается в том, что исходный код функций доступен как объекты в рабочей области.

Таким образом, если бы я хотел знать исходный код, например, grep() Iможно просто набрать grep в консоли и прочитать код.

Точно так же я могу прочитать документацию для grep, набрав ?grep в консоли.

Вопрос: Как я могу получить исходный код для документации функции?Другими словами, где я могу найти .rd файлы?

Я считаю, что изучение хорошо написанного кода - отличный способ изучения идиом.Теперь я хочу научиться писать документацию для некоторых очень специфических случаев.Мне не удалось найти файлы документации для каких-либо базовых функций R в моей установке R.Возможно, я искал не в том месте.

1 Ответ

28 голосов
/ 21 сентября 2011

Кажется, вы можете извлечь источники Rd из установленного R. Я использую R-devel (2011-09-05 r56942).

Получить базу данных Rd для базового пакета.

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

Поиск «grep.Rd» в именах Rd DB, например:

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" 

Получите только объект 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, поэтому вы можете уточнить поиск по ключевым словам или имени, посмотрите примеры в? Rd_db и попробуйте это.

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