R包的HTML帮助页面中的数字(R代码执行结果)

时间:2011-01-19 17:22:29

标签: r package roxygen

在R中编写包时,您可以以Rd格式创建帮助页面,然后将它们转换为HTML页面。如果帮助页面包含示例代码,则会在“示例”部分中打印。

例如,“stats”包的函数“prcomp”有两个页面:

  1. 仅示例代码:http://stat.ethz.ch/R-manual/R-patched/library/stats/html/prcomp.html
  2. 示例代码+数字结果: http://rgm2.lab.nig.ac.jp/RGM2/R_man-2.9.0/library/stats/man/prcomp.html
  3. 问题是如何生成R代码执行的结果,特别是包含输出数据?这对应于“结果”部分。

    我使用以下命令将Rd转换为HTML:

    R CMD Rdconv -t html $rdfile > $rdname.html
    

    调用R函数http://stat.ethz.ch/R-manual/R-devel/library/tools/html/Rd2HTML.html

    我将不胜感激任何意见或建议。 感谢。

3 个答案:

答案 0 :(得分:8)

您可能需要查看helpr软件包,该软件包提供文档的Web前端,以及许多其他改进,显示示例的结果。

答案 1 :(得分:4)

感谢@rcs和@hadley的评论。

实际上,两种提议的解决方案似乎都不符合我的需求。以Rd格式嵌入图像并非如此,因为我使用转换Roxygen> Rd。包'帮助'确实令人印象深刻,但我认为它更适合构建计算机中安装的所有软件包的知识库。作为软件包开发人员,我需要一些更基本,更灵活的方法来自行更改。

最后,我得到了我的预期,fitSpline.html。这与我在问题中提出的参考页面prcomp.html非常相似。

我发现没有办法采用包“工具”在HTML文档中包含图像,至少目前是这样。因此,我编写了一个bash脚本,在输入中获取Rd文件,提取“\ examples”部分并通过运行Sweave获取html / image输出。之后,'Results'部分的html部分与命令'R CMD Rdconv -t html'获得的html页面合并。

这似乎是很多代码,但我只想与那些同时编写R软件包的人分享我的解决方案。

祝你好运, 安德烈

#!/bin/bash

rdfile="fitSpline.Rd"
rdname=$(echo "$rdfile" | cut -d'.' -f1)

rfile=$rdname.R
sed -n '/\examples{/,/}/p' $rdfile > $rfile # text between two patterns
sed -i 's/\\examples{//' $rfile # remove pattern '\examples{'
sed -i 's/}$//' $rfile # remove the character '}'

rnwfile=$rdname.Rnw
cp $rfile $rnwfile
sed -i '1 i png("Rplot%03d.png")' $rnwfile
sed -i '1 i  <<example, echo=true, results=tex>>=' $rnwfile
sed -i '$ a dev.off()' $rnwfile
sed -i '$ a @' $rnwfile

texfile=$rdname.tex
R CMD Sweave $rnwfile
sed -i 's/\\begin{Schunk}//' $texfile
sed -i 's/\\begin{Sinput}//' $texfile
sed -i 's/\\end{Schunk}//' $texfile
sed -i 's/\\end{Sinput}//' $texfile
sed -i '/^$/d' $texfile # remove empty lines

reshtmlfile=$rdname.results.html
echo "<h3>Results</h3>" > $reshtmlfile
echo "<pre>" >> $reshtmlfile
cat $texfile >> $reshtmlfile
echo "</pre>" >> $reshtmlfile

for fig in $(ls *.png) ; do
  echo "<br><a href=\"$fig\"><img src=\"$fig\"></a>" >> $reshtmlfile
done

htmlfile=$rdname.html
R CMD Rdconv -t html $rdfile > $htmlfile

sed -i 's/<\/body>//' $htmlfile
sed -i 's/<\/html>//' $htmlfile
cat $reshtmlfile >> $htmlfile
echo "</body>" >> $htmlfile
echo "</html>" >> $htmlfile

答案 2 :(得分:1)

我想让你知道R 2.14 (see here)中出现了一个新的解决方案:

  

Rd标记有一个新的\ figure标记,因此可以包含数字   转换为HTML或LaTeX时的帮助页面。有一些例子   par()和points()的帮助页。

Hadley,你的帮助程序库听起来很棒,我很乐意在你把它的新版本放在CRAN上时尝试一下。