This document邓肯默多克,也将this SO post。
从这些,你也许可以尝试一些类似如下:
getauthors <- function(package){
db <- tools::Rd_db(package)
authors <- lapply(db,function(x) {
tags <- tools:::RdTags(x)
if("\\author" %in% tags){
# return a crazy list of results
#out <- x[which(tmp=="\\author")]
# return something a little cleaner
out <- paste(unlist(x[which(tags=="\\author")]),collapse="")
}
else
out <- NULL
invisible(out)
})
gsub("\n","",unlist(authors)) # further cleanup
}
然后,我们可以在一个包或两个运行此:
> getauthors("knitr")
d:/RCompile/CRANpkg/local/3.0/knitr/man/eclipse_theme.Rd
" Ramnath Vaidyanathan"
d:/RCompile/CRANpkg/local/3.0/knitr/man/image_uri.Rd
" Wush Wu and Yihui Xie"
d:/RCompile/CRANpkg/local/3.0/knitr/man/imgur_upload.Rd
" Yihui Xie, adapted from the imguR package by Aaron Statham"
d:/RCompile/CRANpkg/local/3.0/knitr/man/knit2pdf.Rd
" Ramnath Vaidyanathan, Alex Zvoleff and Yihui Xie"
d:/RCompile/CRANpkg/local/3.0/knitr/man/knit2wp.Rd
" William K. Morris and Yihui Xie"
d:/RCompile/CRANpkg/local/3.0/knitr/man/knit_theme.Rd
" Ramnath Vaidyanathan and Yihui Xie"
d:/RCompile/CRANpkg/local/3.0/knitr/man/knitr-package.Rd
" Yihui Xie <http://yihui.name>"
d:/RCompile/CRANpkg/local/3.0/knitr/man/read_chunk.Rd
" Yihui Xie; the idea of the second approach came from Peter Ruckdeschel (author of the SweaveListingUtils package)"
d:/RCompile/CRANpkg/local/3.0/knitr/man/read_rforge.Rd
" Yihui Xie and Peter Ruckdeschel"
d:/RCompile/CRANpkg/local/3.0/knitr/man/rst2pdf.Rd
" Alex Zvoleff and Yihui Xie"
d:/RCompile/CRANpkg/local/3.0/knitr/man/spin.Rd
" Yihui Xie, with the original idea from Richard FitzJohn (who named it as sowsear() which meant to make a silk purse out of a sow's ear)"
也许工具:
> getauthors("tools")
D:/murdoch/recent/R64-3.0/src/library/tools/man/bibstyle.Rd
" Duncan Murdoch"
D:/murdoch/recent/R64-3.0/src/library/tools/man/checkPoFiles.Rd
" Duncan Murdoch"
D:/murdoch/recent/R64-3.0/src/library/tools/man/checkRd.Rd
" Duncan Murdoch, Brian Ripley"
D:/murdoch/recent/R64-3.0/src/library/tools/man/getDepList.Rd
" Jeff Gentry "
D:/murdoch/recent/R64-3.0/src/library/tools/man/HTMLlinks.Rd
"Duncan Murdoch, Brian Ripley"
D:/murdoch/recent/R64-3.0/src/library/tools/man/installFoundDepends.Rd
"Jeff Gentry"
D:/murdoch/recent/R64-3.0/src/library/tools/man/makeLazyLoading.Rd
"Luke Tierney and Brian Ripley"
D:/murdoch/recent/R64-3.0/src/library/tools/man/parse_Rd.Rd
" Duncan Murdoch "
D:/murdoch/recent/R64-3.0/src/library/tools/man/parseLatex.Rd
"Duncan Murdoch"
D:/murdoch/recent/R64-3.0/src/library/tools/man/Rd2HTML.Rd
" Duncan Murdoch, Brian Ripley"
D:/murdoch/recent/R64-3.0/src/library/tools/man/Rd2txt_options.Rd
"Duncan Murdoch"
D:/murdoch/recent/R64-3.0/src/library/tools/man/RdTextFilter.Rd
" Duncan Murdoch"
D:/murdoch/recent/R64-3.0/src/library/tools/man/SweaveTeXFilter.Rd
"Duncan Murdoch"
D:/murdoch/recent/R64-3.0/src/library/tools/man/texi2dvi.Rd
" Originally Achim Zeileis but largely rewritten by R-core."
D:/murdoch/recent/R64-3.0/src/library/tools/man/tools-package.Rd
" Kurt Hornik and Friedrich Leisch Maintainer: R Core Team [email protected]"
D:/murdoch/recent/R64-3.0/src/library/tools/man/vignetteDepends.Rd
" Jeff Gentry "
D:/murdoch/recent/R64-3.0/src/library/tools/man/vignetteEngine.Rd
"Duncan Murdoch and Henrik Bengtsson."
D:/murdoch/recent/R64-3.0/src/library/tools/man/writePACKAGES.Rd
" Uwe Ligges and R-core."
有些函数没有作者字段,所以这个ju st在getauthors
的末尾调用unlist
时会丢弃这些值,但可以稍微修改该代码以返回NULL
的值。
而且,进一步的分析将成为一个有点困难,因为包作者似乎非常不同的方式来使用这个字段。 devtools只有一个作者字段。在汽车有一堆,其中每个包含一个电子邮件地址。等等,但是这会让你获得可用的信息,你应该能够进一步处理。
注:我以前这个答案的版本提供了一个解决方案,如果你有一个路文件的完整路径,但如果你试图对已安装的软件包做到这一点没有工作。遵循泰勒的建议,我已经制定了一个更完整的解决方案。
的可能重复[如何从R内部的帮助内容写入一个文件?](http://stackoverflow.com/questions/7493843/how-to-write-contents-of-help-to-a- file-from-within-r) –
示例输入和输出? – Spacedman
约书亚 - 这不是重复的,因为它只涉及提取整个文本的步骤,而不涉及如何解析它。 Spacedman - 在一分钟内。 –