从文档中获取函数的标题

dar*_*zig 4 documentation r

我想rnorm在我的脚本之一中获得基本函数的标题(例如:)。这包含在文档中,但我不知道如何“抓住”它。

我的意思是RD文件中给出的行\title{}或文档中的顶行。

有没有简单的方法可以做到这一点,而无需调用Rd_db函数tools并解析所有 RD 文件——因为这个简单的东西会产生很大的开销?其他事情:我也尝试过parse_Rd,但是:

  • 我不知道哪个Rd文件包含我的功能,
  • 我的系统上没有Rd文件(只有rdbrdxrds)。

因此,解析(离线)文档的函数将是最好的:)


概念验证演示:

> get.title("rnorm")
[1] "The Normal Distribution"
Run Code Online (Sandbox Code Playgroud)

42-*_*42- 5

如果您查看代码,help,您会发现该函数index.search似乎是拉入帮助文件位置的函数,并且关联的 find.packages() 函数的默认值为 NULL。事实证明,该函数既没有帮助,也没有暴露出来,所以我测试了它所在的包(base、tools、utils)的常见嫌疑,并最终得到“utils:

utils:::index.search("+", find.package())
#[1] "/Library/Frameworks/R.framework/Resources/library/base/help/Arithmetic"
Run Code Online (Sandbox Code Playgroud)

所以:

 ghelp <- utils:::index.search("+", find.package())
 gsub("^.+/", "", ghelp)
#[1] "Arithmetic"
ghelp <- utils:::index.search("rnorm", find.package())
gsub("^.+/", "", ghelp)
#[1] "Normal"
Run Code Online (Sandbox Code Playgroud)

您要求的是\title{Title},但在这里我已经向您展示了如何找到要解析的特定 Rd 文件,听起来好像您已经知道如何做到这一点。

编辑:@Hadley 提供了一种获取所有帮助文本的方法,一旦您知道包名称,请将其应用于上面的 index.search() 值:

target <- gsub("^.+/library/(.+)/help.+$", "\\1", utils:::index.search("rnorm", 
                                                                  find.package()))
doc.txt <- pkg_topic(target, "rnorm")  # assuming both of Hadley's functions are here
print(doc.txt[[1]][[1]][1])
#[1] "The Normal Distribution"
Run Code Online (Sandbox Code Playgroud)