2011-01-19 63 views
11

在R中編寫包時,可以使用Rd格式創建幫助頁面,然後將它們轉換爲HTML頁面。如果幫助頁面包含示例代碼,則將打印在「示例」部分。R包的HTML幫助頁面中的數字(R代碼執行結果)

例如,有兩頁爲包的功能 「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

問題是如何生成R代碼執行的結果,特別是包括輸出數字?這對應於「結果」部分。

我用下面的命令來路轉換爲HTML:

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

這就要求R函數​​。

我將不勝感激任何意見或建議。 謝謝。

+0

請參閱:[在Rd文檔中嵌入圖像](http://romainfrancois.blog.free.fr/index.php?post/2010/04/03/embed-images-in-Rd-documents) – rcs 2011-01-20 08:18:46

回答

8

您可能想查看helpr軟件包,該軟件包提供了文檔的Web前端,以及許多其他改進,可以按順序顯示示例結果。

+0

+ 1助手正在尋找*很好*自從我上次檢查出來! disqus評論是全球共享的嗎? – Sharpie 2011-01-20 05:46:47

+1

是的 - 這個想法是對你的本地文檔有全局的評論。 – hadley 2011-01-20 20:43:23

4

感謝@ rcs和@hadley的評論。

實際上,兩種提議的解決方案似乎都不符合我的需求。以Rd格式嵌入圖像並非如此,因爲我使用了Roxygen> Rd轉換。這個軟件包的'幫助者'確實給人印象深刻,但我認爲它更適合構建您計算機中安裝的所有軟件包的知識庫。我需要一些更具基本靈活性的東西來作爲一名軟件包開發人員自己完成更改。

最後,我得到了我的預期,fitSpline.html。這與我在問題prcomp.html中提到的參考頁非常相似。

我發現在HTML文檔中至少現在沒有辦法採用包'工具'來獲取圖像。因此,我編寫了一個bash腳本,它在輸入文件上創建一個Rd文件,提取'\ examples'部分並通過運行Sweave獲取html/image輸出。之後,「結果」部分的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 
1

我想,讓你知道有出來R中2.14 (see here)一個新的解決方案:

路標記有一個新的\數字標記,以便當轉換爲HTML或LaTeX時,這些數字可以包含在 幫助頁面中。有關於par()和points()的 幫助頁面上的示例。

哈德利,你的幫助圖書館聽起來不錯,我很樂意嘗試一下,一旦你把它的更新版本的CRAN。