Цифры (результаты выполнения кода R) в HTML-справочных страницах для R-пакета

При написании пакета в R вы можете создать страницы справки в формате Rd, а затем преобразовать их в HTML-страницы. Если страница справки содержит пример кода, она печатается в разделе "Примеры".

Например, для функции "prcomp" пакета "stats" есть две страницы:

Вопрос заключается в том, как генерировать результаты выполнения 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.

Я буду благодарен за любые замечания или предложения. Спасибо.

Ответ 1

Возможно, вы захотите проверить пакет helpr, который предоставляет веб-интерфейс для документации, которая, как и многие другие улучшения, отображает результаты примеров в строке.

Ответ 2

Спасибо @rcs и @hadley за ваши комментарии.

Собственно, оба предложенных решения, похоже, не соответствуют моим потребностям. Встраивание изображений в формате Rd не так, поскольку я использую переход Roxygen > Rd. Пакет "helpr" действительно впечатляет, но я думаю, что он больше подходит для создания базы знаний всех пакетов, установленных на вашем компьютере. Мне нужно было что-то более базовое с гибкостью, чтобы делать изменения самостоятельно как разработчиком пакета.

Наконец, я получил то, что ожидал, fitSpline.html. Это очень похоже на ссылку, на которую я поставил вопрос, prcomp.html.

Я обнаружил, что нет способа использовать пакетные инструменты для получения изображений в документации HTML, по крайней мере, на данный момент. Таким образом, я написал bash script, который берет Rd файл на входе, извлекает раздел "\ examples" и получает вывод html/image, запустив Sweave. Впоследствии html-часть раздела "Результаты" объединяется с html-страницей, полученной командой "R CMD Rdconv -t 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

Ответ 3

Я думал дать вам знать, что в R 2.14 появилось новое решение (см. здесь):

Разметка Rd имеет новый ярлык с цифрами, чтобы цифры могли быть включены в страниц справки при конвертации в HTML или LaTeX. Есть примеры на страницы справки для параметров par() и points().

Хэдли, ваша библиотека help отлично звучит, я бы с удовольствием попробовал ее, как только вы разместите ее более новую версию на CRAN.