[R] Automating citations in Sweave
Charles C. Berry
cberry at tajo.ucsd.edu
Thu Oct 23 18:53:32 CEST 2008
On Thu, 23 Oct 2008, ONKELINX, Thierry wrote:
> Dear all,
>
> Is there an elegant way to add citations of packages when using Sweave?
> Ideally I'd like a function which creates a Bibtex-file with the
> packagenames as keys. The idea is to use \cite{packagename} or \cite{R}
> in LaTeX.
>
> I know you can get the Bibtex entry with
> toBibtex(citation("packagename")). But after updating R or a package one
> needs to update the bib-file too. When trying to automate this I came up
> with the code below. It generates a Bibtex-file, but without keys for
> each item. So I have to add those manually. Another problem is that I
> get multiple entrys for R it self.
>
> Suggestions are welcome.
>
Thierry,
How 'bout:
cite.by.name <- function(x){
res <- toBibtex(citation(x))
if (is.list(res)) res <- res[[1]]
res[1] <- sub("{",paste("{",x,sep=''),res[1],fixed=TRUE)
res
}
> cite.by.name("MASS")
@Book{MASS,
title = {Modern Applied Statistics with S},
author = {W. N. Venables and B. D. Ripley},
publisher = {Springer},
edition = {Fourth},
address = {New York},
year = {2002},
note = {ISBN 0-387-95457-0},
url = {http://www.stats.ox.ac.uk/pub/MASS4},
}
>
Then
sapply( .packages(TRUE), function(x) try( cite.by.name(x) ) )
should be close to what you want.
HTH,
Chuck
> Thierry
>
> sink("Rpackages.bib")
> tmp <- sapply(.packages(), function(x){
> entry <- toBibtex(citation(x))
> if(class(entry) == "Bibtex"){
> print(entry)
> } else {
> tmp <- sapply(entry, print)
> }
> })
> sink()
>
[snip]
Charles C. Berry (858) 534-2098
Dept of Family/Preventive Medicine
E mailto:cberry at tajo.ucsd.edu UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/ La Jolla, San Diego 92093-0901
More information about the R-help
mailing list