R 一本书的树脂
在R书的结尾,我想展示用于编译该书的主要R包的版本。我想知道除了在块中使用R 一本书的树脂,r,packages,knitr,R,Packages,Knitr,在R书的结尾,我想展示用于编译该书的主要R包的版本。我想知道除了在块中使用sessionInfo(),我还有什么可以做得更好的,例如 \section*{Colophon} This book was produced using \Sexpr{R.version.string}, \pkg{knitr} (\Sexpr{packageDescription("knitr")[["Version"]]}) and other package versions listed below. &l
sessionInfo()
,我还有什么可以做得更好的,例如
\section*{Colophon}
This book was produced using \Sexpr{R.version.string},
\pkg{knitr} (\Sexpr{packageDescription("knitr")[["Version"]]})
and other package versions listed below.
<<session-info, size='footnotesize',R.options=list(width=90)>>=
print(sessionInfo(), locale = FALSE)
@
\section*{Colophon}
这本书是使用\Sexpr{R.version.string}制作的,
\pkg{knitr}(\Sexpr{packageDescription(“knitr”)[[“Version”]})
以及下面列出的其他软件包版本。
=
打印(sessionInfo(),locale=FALSE)
@
特别是,sessionInfo()
列出了间接加载的所有包以及直接加载的包
```{r}
library(knitr)
p = devtools::loaded_packages()
p$version = unlist(lapply(p$package, function(x) as.character(packageVersion(x))))
kable(p[order(p$package),], row.names=FALSE)
```
如果未安装devtools,请从
加载的\u包中窃取代码
这将给出加载到当前会话中的包的逗号分隔列表:
pkgs <- sort(sub("package:", "", grep("package:", search(), value = TRUE)));
toString(Map(function(p) sprintf("%s (%s)", p, packageVersion(p)), pkgs))
这段代码中只使用了核心R函数。我不想列出当前会话中加载的所有包(基本包、依赖项),因此我根据自己的需要提出了更好的解决方案。也许这对其他人有用
library()
显式加载的所有包devtools:::package_info()
进行格式化tcgrep
perl脚本之外,所有这些命令都是标准的,它们可以递归地在文件中查找字符串
tcgrep -E Rnw '^library(.*)' . \
| grep '/ch' \
| perl -p -e 's/^.*://; s/\s*#.*//' \
| perl -p -e 's/library\(([\w\d]+)\)/"$1"/g; s/;/, /' \
| sort -u | perl -p -e 's/\n/, /' > packages-used.R
这给了我
packages <- c(
"AER", "ca", "car", "colorspace", "corrplot", "countreg", "directlabels", "effects", "ggparallel", "ggplot2", "ggtern", "gmodels", "gnm", "gpairs", "heplots", "Lahman", "lattice", "lmtest", "logmult", "MASS", "MASS", "countreg", "mgcv", "nnet", "plyr", "pscl", "RColorBrewer", "reshape2", "rms", "rsm", "sandwich", "splines", "UBbipl", "vcd", "vcdExtra", "VGAM", "xtable")
如果您使用的是LaTeX,您可以使用以下方法为所有软件包生成参考书目: %%begin.rcode ruber,结果='asis',缓存=FALSE %写入bib(file=“generated.bib”) %%end.rcode
您可以将其放在\end{document}之后,并添加相应的\书目{mybib,generated}条目。通过这种方式,您也可以使用通常的\cite{}引用它们,我已经这样做了,但是通过一个latex命令
\pkg{}
,它打印包名并生成一个\cite{}
命令。但冒号的用途不同——在一个地方指示文本中使用的软件包版本。
packages <- c(
"AER", "ca", "car", "colorspace", "corrplot", "countreg", "directlabels", "effects", "ggparallel", "ggplot2", "ggtern", "gmodels", "gnm", "gpairs", "heplots", "Lahman", "lattice", "lmtest", "logmult", "MASS", "MASS", "countreg", "mgcv", "nnet", "plyr", "pscl", "RColorBrewer", "reshape2", "rms", "rsm", "sandwich", "splines", "UBbipl", "vcd", "vcdExtra", "VGAM", "xtable")
library(devtools)
pkg_info <- devtools:::package_info(packages)
# clean up unwanted
pkg_info$source <- sub(" \\(R.*\\)", "", pkg_info$source)
pkg_info <- pkg_info[,-2]
pkg_info
> pkg_info
package version date source
AER 1.2-3 2015-02-24 CRAN
ca 0.60 2015-03-01 R-Forge
car 2.0-25 2015-03-03 R-Forge
colorspace 1.2-6 2015-03-11 CRAN
corrplot 0.73 2013-10-15 CRAN
countreg 0.1-2 2014-10-17 R-Forge
directlabels 2013.6.15 2013-07-23 CRAN
effects 3.0-4 2015-03-22 R-Forge
ggparallel 0.1.1 2012-09-09 CRAN
ggplot2 1.0.1 2015-03-17 CRAN
ggtern 1.0.5.0 2015-04-15 CRAN
gmodels 2.15.4.1 2013-09-21 CRAN
gnm 1.0-8 2015-04-22 CRAN
gpairs 1.2 2014-03-09 CRAN
heplots 1.0-15 2015-04-18 CRAN
Lahman 3.0-1 2014-09-13 CRAN
lattice 0.20-31 2015-03-30 CRAN
lmtest 0.9-33 2014-01-23 CRAN
logmult 0.6.2 2015-04-22 CRAN
MASS 7.3-40 2015-03-21 CRAN
mgcv 1.8-6 2015-03-31 CRAN
nnet 7.3-9 2015-02-11 CRAN
plyr 1.8.2 2015-04-21 CRAN
pscl 1.4.9 2015-03-29 CRAN
RColorBrewer 1.1-2 2014-12-07 CRAN
reshape2 1.4.1 2014-12-06 CRAN
rms 4.3-1 2015-05-01 CRAN
rsm 2.7-2 2015-05-13 CRAN
sandwich 2.3-3 2015-03-26 CRAN
UBbipl 3.0.4 2013-10-13 local
vcd 1.4-0 2015-04-20 local
vcdExtra 0.6-8 2015-04-16 CRAN
VGAM 0.9-8 2015-05-11 CRAN
xtable 1.7-4 2014-09-12 CRAN