我想rnorm在我的脚本之一中获得基本函数的标题(例如:)。这包含在文档中,但我不知道如何“抓住”它。
我的意思是RD文件中给出的行\title{}或文档中的顶行。
有没有简单的方法可以做到这一点,而无需调用Rd_db函数tools并解析所有 RD 文件——因为这个简单的东西会产生很大的开销?其他事情:我也尝试过parse_Rd,但是:
因此,解析(离线)文档的函数将是最好的:)
概念验证演示:
> get.title("rnorm")
[1] "The Normal Distribution"
Run Code Online (Sandbox Code Playgroud)
如果您查看代码,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)