Press "Enter" to skip to content

odfWeave и кириллица

odfWeave – пакет для R, позволяющий писать текст отчёта и команды для R в одном файле формата OpenDocumentFormat (редакторы, например, OpenOffice.org или LibreOffice), а затем в этом документе вместо R-команд получать результат их исполнения, будь то отдельные переменные, таблицы или рисунки.

При работе с документами, содержащими кириллицу, в процессе обработки исходного файла возникает ошибка “Error: ‘content.Rnw’ is not ASCII and does not declare an encoding” и новый файл с результатами не создаётся.

Как показал анализ ситуации (анализ исходного кода пакета odfWeave), данная ошибка возвращается функцией Sweave, когда odfWeave вызывает её следующим образом: Sweave(file=rnwFileName, output=”content_1.xml”, quiet=!control$verbose, driver=RweaveOdf(), control=control) Это строки 136-137 в исходнике odfWeave.R версии 0.7.17.

Если вручную выполнить эту команду, добавив параметр encoding=UTF8, то она выполняется без ошибок.

Осталось узнать, как установить хакнутую версию odfWeave. Информация об этом, похоже, есть в разделе по установке расширений руководства по администрированию R.

 

ОБНОВЛЕНИЕ: Нашлось решение без хакинга odfWeave: можно переопределить функцию Sweave(), чтобы к строке параметров добавлялся ещё один параметр с кодировкой:

Sweave1 <- Sweave

Sweave <- function(…) Sweave1(…, encoding=’UTF-8′)

После этого odfWeave() начинает работать с документами, содержащими русские буквы.

Leave a Reply

Your email address will not be published. Required fields are marked *

Защита от спама *