[R] Automating citations in Sweave

ONKELINX, Thierry Thierry.ONKELINX at inbo.be
Fri Oct 24 11:27:20 CEST 2008

That works just fine. 

Thank you. 


ir. Thierry Onkelinx
Instituut voor natuur- en bosonderzoek / Research Institute for Nature
and Forest
Cel biometrie, methodologie en kwaliteitszorg / Section biometrics,
methodology and quality assurance
Gaverstraat 4
9500 Geraardsbergen
tel. + 32 54/436 185
Thierry.Onkelinx op inbo.be 

To call in the statistician after the experiment is done may be no more
than asking him to perform a post-mortem examination: he may be able to
say what the experiment died of.
~ Sir Ronald Aylmer Fisher

The plural of anecdote is not data.
~ Roger Brinner

The combination of some data and an aching desire for an answer does not
ensure that a reasonable answer can be extracted from a given body of
~ John Tukey

-----Oorspronkelijk bericht-----
Van: Charles C. Berry [mailto:cberry op tajo.ucsd.edu] 
Verzonden: donderdag 23 oktober 2008 18:54
Aan: ONKELINX, Thierry
CC: r-help op r-project.org
Onderwerp: Re: [R] Automating citations in Sweave

On Thu, 23 Oct 2008, ONKELINX, Thierry wrote:

> Dear all,
> Is there an elegant way to add citations of packages when using
> Ideally I'd like a function which creates a Bibtex-file with the
> packagenames as keys. The idea is to use \cite{packagename} or
> in LaTeX.
> I know you can get the Bibtex entry with
> toBibtex(citation("packagename")). But after updating R or a package
> needs to update the bib-file too. When trying to automate this I came
> 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.


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)

> cite.by.name("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},


 	sapply( .packages(TRUE), function(x) try( cite.by.name(x) ) )

should be close to what you want.



> 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()


Charles C. Berry                            (858) 534-2098
                                             Dept of Family/Preventive
E mailto:cberry op tajo.ucsd.edu	            UC San Diego
http://famprevmed.ucsd.edu/faculty/cberry/  La Jolla, San Diego

Dit bericht en eventuele bijlagen geven enkel de visie van de schrijver weer 
en binden het INBO onder geen enkel beding, zolang dit bericht niet bevestigd is
door een geldig ondertekend document. The views expressed in  this message 
and any annex are purely those of the writer and may not be regarded as stating 
an official position of INBO, as long as the message is not confirmed by a duly 
signed document.

More information about the R-help mailing list