Achim and others:
Achim's solution could be directly usable if it also added a BibTeX key,
perhaps just the name of the package to the '@Manual{,' initial line of
each. I wrapped the previous suggestions in a function, and played
around with the components, but can't quite see how to account for the
failed citation calls. Can anyone take the next step?
Rpackage.bibs <- function(file="Rpackages.bib") {
pkgs <-installed.packages()[,1]
bibs <- lapply(pkgs, function(x) try(toBibtex(citation(x))))
n.installed <- length(bibs)
## omit failed citation calls
#bibs <- bibs[-which(sapply(bibs, class) == "try-error")]
bibs <- bibs[!(sapply(bibs, class) == "try-error")]
n.converted <- length(bibs)
## unify to list of Bibtex
bibs <- lapply(bibs, function(x) if(inherits(x, "Bibtex")) list(x)
else x)
## add bibtex keys to each entry
## -- change the first item of each bib entry from '@Manual{,' to
'@Manual{pkgname,'
## list of unique entries
bibs <- unique(do.call("c", bibs))
## write everything to a single .bib file
writeLines(do.call("c", lapply(bibs, as.character)), file)
cat("Converted ", n.converted, " of ", n.installed, " package
citations to BibTex\n",
"Results written to file ", file, "\n")
}
Achim Zeileis wrote:
On Fri, 11 Dec 2009, Rainer M Krug wrote:
Hi
is there an easy and fast way, to generate a BibTeX file of all
installed /
loaded packages and R?
I know about toBibtex(citation()) to extract the BibTeX for a single
package, but how can I generate a file containg citations for all
installed
/ loaded packages?
I don't think that there is a way other than calling citation() for each
of the installed.packages(). You could do something like this:
## try to get BibTeX for each of the installed packages
b <- lapply(installed.packages()[,1], function(x)
try(toBibtex(citation(x))))
## omit failed citation calls
b <- b[-which(sapply(b, class) == "try-error")]
## unify to list of Bibtex
b <- lapply(b, function(x) if(inherits(x, "Bibtex")) list(x) else x)
## list of unique entries
b <- unique(do.call("c", b))
## write everything to a single .bib file
writeLines(do.call("c", lapply(b, as.character)), "Rpackages.bib")
hth,
Z
--
Michael Friendly Email: friendly AT yorku DOT ca
Professor, Psychology Dept.
York University Voice: 416 736-5115 x66249 Fax: 416 736-5814
4700 Keele Street http://www.math.yorku.ca/SCS/friendly.html
Toronto, ONT M3J 1P3 CANADA
______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.