Рисунки (результаты выполнения кода R) на страницах справки HTML для пакета R - PullRequest
11 голосов
/ 19 января 2011

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

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

  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 и, в частности, включить выходные данные? Это соответствует разделу «Результаты».

Я использую следующую команду для преобразования 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 ]

8 голосов
/ 20 января 2011

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

4 голосов
/ 01 февраля 2011

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

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

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

Я обнаружил, что нет никакого способа принять пакет инструментов, чтобы иметь изображения в документации HTML, по крайней мере на данный момент.Таким образом, я написал bash-скрипт, который принимает на вход Rd-файл, извлекает раздел '\ examples' и получает вывод html / image, запустив Sweave.После этого html-часть раздела «Результаты» объединяется со html-страницей, полученной командой «R CMD Rdconv -t html».

Кажется, что кода много, но я просто хочуподелитесь моим решением с теми, кто также пишет пакеты R.

С наилучшими пожеланиями, Андрей

<code>#!/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 "
">> $ reshtmlfile для fig in $ (ls * .png); do echo"
">> $ 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 "" >> $ htmlfile echo "" >> $ htmlfile
1 голос
/ 23 сентября 2011

Я подумал сообщить вам, что в R 2.14 (см. Здесь) :

выходит новое решение.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...