49  R на сетевых дисках

49.1 Обзор

Использование R на сетевых или “корпоративных” общих дисках может представлять дополнительные трудности. На этой странице приведены подходы, типичные ошибки и рекомендации по их устранению, полученные из нашего опыта работы с такими проблемами. В том числе приведены советы для особо деликатных ситуаций, связанных с R Markdown.

Использование R на сетевых дисках: общие принципы

  1. Вы должны получить доступ администратора к своему компьютеру. Настройте RStudio так, чтобы она запускалась от имени администратора.
  2. По возможности сохраняйте пакеты в библиотеку на диске с буквенным обозначением (например, “C:”). Используйте библиотеку пакетов, путь к которой начинается с “\" минимальным образом.
  3. Пакет rmarkdown не должен быть в библиотеке пакета “\", поскольку тогда он не сможет подключиться к TinyTex или Pandoc.

49.2 RStudio от имени администратора

Чтобы открыть RStudio, щелкните на значке RStudio правой кнопкой мыши. В зависимости от типа машины может появиться опция “Запуск от имени администратора”. В противном случае может появиться возможность выбрать пункт “Свойства” (тогда должно появиться окно с опцией “Совместимость”, в котором можно установить флажок “Запуск от имени администратора”).

49.3 Полезные команды

Ниже представлены некоторые полезные команды для поиска и устранения проблем при использовании R на сетевых дисках.

Вы можете выдать путь(и) к библиотекам пакетов, которые использует R. Они будут перечислены в том порядке, в котором R использует их для установки/загрузки/поиска пакетов. Таким образом, если вы хотите, чтобы R использовал другую библиотеку по умолчанию, вы можете изменить порядок следования этих путей (см. ниже).

# поиск библиотек
.libPaths()                   # ваши пути к библиотекам, указанные в порядке установки/поиска R 
                              # Примечание: все библиотеки будут перечислены, но для установки для некоторых (например, C:), вам 
                              # может потребоваться запуск RStudio от лица администратора (они не появятся в 
                              # выпадающем меню библиотеки установки пакетов) 

Вы можете захотеть изменить порядок следования библиотек пакета, используемых R. Например, если R выбирает местоположение библиотеки, начинающееся с “\", и то, которое начинается с буквы, например,”D:“. Вы можете скорректировать порядок .libPaths() с помощью следующего кода.

# смена порядка библиотек
# это может повлиять на приоритетность для R поиска пакета. Например, вы можете захотеть, чтобы библиотека C: указывалась первой
myPaths <- .libPaths() # получаем пути
myPaths <- c(myPaths[2], myPaths[1]) # меняем их
.libPaths(myPaths) # повторно присваиваем

Если у вас возникли трудности с подключением R Markdown к Pandoc, начните с этого кода, чтобы выяснить, где, по мнению RStudio, находится ваша установка Pandoc.

# Находим Pandoc
Sys.getenv("RSTUDIO_PANDOC")  # Найдите, где RStudio считает, что находится ваша установка Pandoc

Если вы хотите увидеть, из какой библиотеки загружается пакет, попробуйте выполнить следующий код:

# поиск пакета
# дает первое расположение пакета (обратите внимание на порядок ваших библиотек)
find.package("rmarkdown", lib.loc = NULL, quiet = FALSE, verbose = getOption("verbose")) 

49.4 Поиск и устранение распространенных проблем

“Failed to compile…tex in rmarkdown” (Не получилось компилировать…tex в rmarkdown)

  • Проверьте установку TinyTex, либо установите TinyTex в C:. См. страницу Основы R для информации о том, как установить TinyTex.
# проверка/установка tinytex в C:
tinytex::install_tinytex()
tinytex:::is_tinytex() # должна выдать TRUE (обратите внимание на три двоеточия)

Internet routines cannot be loaded (Интернет-программы не могут быть загружены)

Например, Error in tools::startDynamicHelp() : internet routines cannot be loaded

  • Попробуйте выбрать 32-битную версию из RStudio через Tools/Global Options (инструменты/глобальные опции).
    • примечание: если 32-битная версия не появляется в меню, убедитесь, что вы не используете RStudio v1.2.
  • Альтернативно попробуйте удалить R и переустановить его с другой версией (32 бита вместо 64)

C: library does not appear as an option when I try to install packages manually (C: библиотека не отображается в качестве опции при попытке установить пакеты вручную)

  • Запустите RStudio от лица администратора, тогда появится эта опция
  • Чтобы настроить RStudio так, чтобы она всегда запускалась от лица администратора (что полезно, если вы используете Rproject, где вы не кликаете на иконку RStudio для открытия)… кликните правой кнопкой на иконку Rstudio

На рисунке ниже показано, как можно вручную выбрать библиотеку для установки пакета. Это окно появляется при открытии панели Packages RStudio и нажатии кнопки “Install” (установить).

Ошибка Pandoc 1

Если вы видите “pandoc error 1” при формировании скриптов R Markdowns на сетевых дисках:

  • Из нескольких мест расположения библиотеки первым должно быть указано то, которое имеет буквенное обозначение (см. коды выше)
  • Приведенное выше решение работало при формировании на локальном диске, но при сетевом подключении к Интернету
  • См. дополнительные советы тут: https://ciser.cornell.edu/rmarkdown-knit-to-html-word-pdf/

Ошибка Pandoc 83

Ошибка выглядит подобным образом: can't find file...rmarkdown...lua.... Это означает, что программа не смогла найти этот файл.

См. https://stackoverflow.com/questions/58830927/rmarkdown-unable-to-locate-lua-filter-when-knitting-to-word

Возможности:

  1. Пакет Rmarkdown не установлен
  2. Пакет Rmarkdown не может быть найден
  3. Проблема с правами администратора.

Возможно, R не может найти файл пакета rmarkdown, поэтому проверьте, в какой библиотеке находится пакет rmarkdown (см. код выше). Если пакет установлен в недоступную библиотеку (например, начинается с “\\”), попробуйте вручную переместить его в C: или другую библиотеку с именованным диском. Следует помнить, что пакет rmarkdown должен иметь возможность подключения к установке TinyTex, поэтому он не может находиться в библиотеке на сетевом диске.

Ошибка Pandoc 61

Например: Error: pandoc document conversion failed with error 61 или Could not fetch...

  • Попробуйте запустить RStudio от имени администратора (щелкните правой кнопкой мыши на значке, выберите запуск от имени администратора, см. инструкции выше)
  • Также посмотрите, можно ли переместить конкретный пакет, с которым не удалось связаться, в библиотеку C:.

Ошибка LaTex (см. ниже)

Ошибка подобная: ! Package pdftex.def Error: File 'cict_qm2_2020-06-29_files/figure-latex/unnamed-chunk-5-1.png' not found: using draft setting. или Error: LaTeX failed to compile file_name.tex.

  • См. https://yihui.org/tinytex/r/#debugging для советов по дебаггингу.
  • См. file_name.log для дополнительной информации

Ошибка Pandoc 127

Это может быть проблема с RAM (памятью). Перезапустите вашу сессию R и попробуйте снова.

Подключение (маппинг) сетевых дисков

Подключение сетевого диска может быть сопряжено с риском. Прежде чем приступать к этому, проконсультируйтесь с ИТ-отделом.

Совет, взятый из этой дискуссии на форуме:

Как открыть файл “через подключенный сетевой диск”?

  • Во-первых, необходимо знать местоположение сети, к которой вы пытаетесь получить доступ.
  • Далее в файловом менеджере Windows нужно щелкнуть правой кнопкой мыши на правой панели “Этот компьютер” и выбрать пункт “Подключить сетевой диск”.
  • Пройдите через диалог, чтобы определить ранее указанное сетевое расположение как диск с буквенным обозначением.
  • Теперь у вас есть два способа добраться до открываемого файла. Использование пути по букве диска должно работать.

Ошибка в install.packages()

Если у вас появится ошибка, где упоминается директория “lock”, например: Error in install.packages : ERROR: failed to lock directory...

Загляните в вашу библиотеку пакетов и вы увидите папку, имя которой начинается с “00LOCK”. Попробуйте выполнить следующие советы:

  • Вручную удалите директорию папки “00LOCK” из библиотеки пакетов. Попробуйте снова установить пакет.
  • Вы можете попробовать команду pacman::p_unlock() (вы можете также ввести эту команду вRprofile, чтобы она выполнялась каждый раз при открытии проекта). Затем попробуйте снова установить пакет. Это может потребовать нескольких попыток.
  • Попробуйте запустить RStudio в режиме администратора, затем попробуйте установить пакеты по одному.
  • Если ничего не помогло, установите пакет в другую библиотеку или папку (например, Temp), затем вручную скопируйте папку пакета в нужную библиотеку.