R - Виньетки, которые не сделаны Sweave возможно? - PullRequest
8 голосов
/ 09 июля 2011

Могу ли я добавить какой-нибудь PDF-файл в папку pkg / doc, чтобы работала функция vignette, но не было соответствующих Rnw, Rtex и т. Д.?

Я имею в виду слайды или документы, содержащие текст уценки, сплетенный с помощью фрагментов R, которые имеют другой процесс сборки и, следовательно, разные расширения файлов.

В руководстве по написанию расширений R предполагается, что должна быть возможность включать документы, которые не могут быть собраны во время установки, но функция vignette, похоже, ищет файлы со специальными расширениями (Rnw, Rtex и т. Д.), А также для файл с именем vignette.rds.

Любые советы приветствуются.

Ответы [ 3 ]

5 голосов
/ 14 июля 2011

(Перекрестная отправка из ответа , который я только что оставил на R-help :)

В качестве обходного пути, вы можете включить в свой пакет собственную функцию xvignette: см. Ниже,Он не будет показывать вам индексы, но он подберет любой файл с соответствующим именем, который вы включите в каталог inst/doc вашего пакета ...

xvignette <- function(vname,pkg,ext="pdf") {
   vname <- paste(vname,ext,sep=".")
   fn <- system.file("doc",vname,package=pkg)
   if (nchar(fn)==0) stop("file not found")
   utils:::print.vignette(list(pdf=fn))
   invisible(fn)
 }

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

Вы можете заполнить значение по умолчанию pkg выше с именем вашего пакета, чтобы упростить для пользователяЯ думал об использовании какого-либо варианта getPackageName(environment(xvignette)), чтобы сделать это автоматически, но это кажется слишком сложным ...

Брайан Рипли также упомянул в своем ответе на вопрос:

В настоящее время vignette () означает Sweave документы, поскольку только они имеют метаданные, такие как заголовки.Это планируется изменить в ближайшее время.

... но я не знаю, что означает "скоро" (пройдет около 6 месяцев, пока не выйдет 2.14.0, я думаю)

edit : http://article.gmane.org/gmane.comp.lang.r.devel/28449 детализирует другой обходной путь (создание фиктивной виньетки, включающей существующий файл PDF)

edit 2 : And

5 голосов
/ 11 декабря 2013

Это поддерживается изначально, начиная с R 3.0.0, см. http://yihui.name/knitr/demo/vignette/.

Инструкции по использованию knitr в качестве двигателя виньетки сводятся к:

  1. add%\VignetteEngine{knitr::knitr} к исходному документу Rnw (обратите внимание, что вам все еще нужно %\VignetteIndexEntry{}, как и прежде)
  2. укажите VignetteBuilder: knitr в пакете ОПИСАНИЕ file
  3. add Suggests: knitr in DESCRIPTIONесли knitr требуется только для виньеток

См. также официальную документацию R по этой теме.

5 голосов
/ 09 июля 2011

Я спрашивал об этом несколько лет назад, и хотя Фриц Лейш поддается этой идее, у него не было времени для ее реализации.

...