Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 一本书的树脂_R_Packages_Knitr - Fatal编程技术网

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

在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.

<<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函数。

我不想列出当前会话中加载的所有包(基本包、依赖项),因此我根据自己的需要提出了更好的解决方案。也许这对其他人有用

  • 在该书的.Rnw文件中查找通过
    library()
    显式加载的所有包

  • 使用
    devtools:::package_info()
    进行格式化

  • 对于(1),我使用了下面的shell命令管道,除了我的trusty
    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