Как изменить путь к библиотеке по умолчанию для пакетов R

Я попытался установить R и R studio на локальный диск на моем рабочем компьютере, а не на сетевую папку организации, потому что все, что проходит через сеть, очень медленно. При установке путь назначения показывает, что это мой локальный диск C:. Однако, когда я устанавливаю новый пакет, показанный путь по умолчанию - это мой сетевой диск, и изменить его невозможно:

.libPaths()
[1] "\\\\The library/path/I/don't/want"
[2] "C:/Program Files/R/R-3.2.1/library" 

Я использую Windows 7 Professional. Как я могу удалить путь к библиотеке [1] и сделать путь [2] своим основным для всех базовых пакетов и всех новых пакетов, которые я устанавливаю?

7 ответов

Решение

Увидеть help(Startup) а также help(.libPaths) так как у вас есть несколько возможностей, где это может быть установлено. Среди них есть

  • установка R_LIBS_USER
  • назначение .libPaths() в .Rprofile или же Rprofile.site

и больше.

В этом конкретном случае вам нужно вернуться назад и сбросить все, где угодно \\\\The library/path/I/don't/want установлено.

Чтобы иначе проигнорировать это, вы должны переопределить это использовать явно, то есть через

library("somePackage", lib.loc=.libPaths()[-1])

при загрузке пакета.

Windows 7: если ваш C:\Program Files (или там, где установлен R) заблокирован для записи, как у меня, тогда вы получите разочарование редактирования RProfile.site (как я сделал). Как указано выше, я обновил R_LIBS_USER и это сработало. Однако даже после прочтения прекрасного руководства несколько раз и тщательного поиска мне понадобилось несколько часов, чтобы сделать это. В духе экономии чужого времени...

Предположим, вы хотите, чтобы ваши пакеты находились в C:\R\Library:

  1. Создать папку C:\R\Library
  2. Нажмите Start -> Control Panel -> User Accounts -> Change my environmental variables
  3. Environmental Variables окно всплывает. Если ты видишь R_LIBS_USERвыделите его и нажмите Edit, В противном случае нажмите New, Оба действия открывают окно с полями для Variable а также Value,
  4. В моем случае, R_LIBS_USER был уже там, и значение было путь к моему рабочему столу. Я добавил к пути созданную папку, разделив ее точкой с запятой, как указано выше. C:\R\Library;C:\Users\Eric.Krantz\Desktop\R stuff\Packages, ПРИМЕЧАНИЕ. Я мог удалить путь к папке на рабочем столе и просто оставить C:\R\Library,

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

Решение заключается в редактировании Rprofile файл для перезаписи переменной R_LIBS_USER который по умолчанию указывает на домашний каталог.

Вот шаги:

  1. Создайте целевую папку назначения для библиотек, например,~\target,
  2. Найти Rprofile файл. В моем случае это было на C:\Program Files\R\R-3.3.3\library\base\R\Rprofile,
  3. Отредактируйте файл и измените определение переменной R_LIBS_USER, В моем случае я заменил эту строку file.path(Sys.getenv("R_USER"), "R", с file.path("~\target", "R",,

Документация, которая поддерживает это решение, находится здесь

Исходный файл с:

 if(!nzchar(Sys.getenv("R_LIBS_USER")))
     Sys.setenv(R_LIBS_USER=
                file.path(Sys.getenv("R_USER"), "R",
                          "win-library",
                          paste(R.version$major,
                                sub("\\..*$", "", R.version$minor),
                                sep=".")
                          )) 

Модифицированный файл:

if(!nzchar(Sys.getenv("R_LIBS_USER")))
     Sys.setenv(R_LIBS_USER=
                file.path("~\target", "R",
                          "win-library",
                          paste(R.version$major,
                                sub("\\..*$", "", R.version$minor),
                                sep=".")
                          ))

Windows 10 в сети

Хранение ваших пакетов на сетевом диске может значительно снизить производительность R / R Studio, и вы тратите много времени на ожидание загрузки / установки библиотек из-за узких мест, связанных с необходимостью извлечения и передачи данных через сервер. обратно на ваш локальный хост. См. Следующие инструкции о том, как создать.RProfile на вашем локальном компьютере:

  1. Создайте каталог под названием C:\Users\xxxxxx\Documents\R\3.4 (или любую другую версию R, которую вы используете, и где вы будете хранить свои локальные пакеты R - расположение вашего каталога может отличаться от моего)
  2. В консоли R введите Sys.getenv("HOME") чтобы получить ваш домашний каталог (здесь будет храниться ваш.RProfile, и R всегда будет проверять там наличие пакетов - и это находится в сети, если пакеты хранятся там)
  3. Создайте файл с именем .Rprofile и поместите это в :\YOUR\HOME\DIRECTORY\ON_NETWORK (каталог, который вы получите после ввода Sys.getenv("HOME") в R Console)
  4. Содержимое файла .Rprofile должно быть так:

#search 2 places for packages- install new packages to first directory- load built-in packages from the second (this is from your base R package- will be different for some)

.libPaths(c("C:\Users\xxxxxx\Documents\R\3.4", "C:/Program Files/Microsoft/R Client/R_SERVER/library"))

message("*** Setting libPath to local hard drive ***")

#insert a sleep command at line 12 of the unpackPkgZip function. So, just after the package is unzipped.

trace(utils:::unpackPkgZip, quote(Sys.sleep(2)), at=12L, print=TRUE)

message("*** Add 2 second delay when installing packages, to accommodate virus scanner for R 3.4 (fixed in R 3.5+)***")

# fix problem with tcltk for sqldf package: https://github.com/ggrothendieck/sqldf#problem-involvling-tcltk

options(gsubfn.engine = "R")

message("*** Successfully loaded .Rprofile ***")
  1. Перезапустите R Studio и убедитесь, что вы видите, что отображаются сообщения выше.

Теперь вы можете наслаждаться более высокой производительностью вашего приложения на локальном хосте, вместо того, чтобы хранить пакеты в сети и все замедлять.

Некоторое время я боролся с этим, поскольку мой рабочий компьютер (с Windows 10) создал пользовательскую библиотеку по умолчанию на сетевом диске, что замедлило бы работу R и RStudio до непригодного для использования состояния.

В случае, если это кому-то поможет, это самый простой способ, который я нашел, без прав администратора:

  • убедитесь, что каталог, в который вы хотите установить пакеты, существует. Если вы хотите соблюдать соглашение, используйте:C:\Users\username\R\win-library\rversion (например, что-то вроде: C:\Users\janebloggs\R\win-library\3.6)
  • создать .Renviron файл в вашем домашнем каталоге (который может быть на сетевом диске?) и напишите в нем одну единственную строку, определяющую R_LIBS_USER переменная в качестве вашего пользовательского пути:

R_LIBS_USER=C:\Users\janebloggs\R\win-library\3.6

(не стесняйтесь добавлять комментарии, строки начинаются с #)

Если .Renviron файл существует, R будет читать его при запуске и использовать переменные, как они там определены, перед запуском кода в .Rprofile. Вы можете прочитать об этом вhelp(Startup).

Теперь он должен быть постоянным между сеансами!

После пары часов попыток решить проблему несколькими способами, некоторые из которых описаны здесь, для меня (на Win 10) вариант создания файла Renviron сработал, но немного отличается от того, что было написано здесь выше. Задача - изменить значение переменной R_LIBS_USER. Для этого необходимы два шага:

  1. Создайте файл с именем Renviron (без точки) в папке \Program\etc\ (Programm - это каталог, в котором установлен R, например, для меня это был c:\Program Files\R\R-4.0.0\etc)
  2. Вставьте строку в Renviron с новым путем: R_LIBS_USER=c:/R/Library

Работает уже несколько дней.

Думаю, я пробовал все вышеперечисленное, и у меня это не сработало. Однако это сработало:

  1. В домашнем каталоге создайте файл с именем ".Renviron".

  2. В этом файле напишите:

             .libPaths(new = "/my/path/to/libs")
    
  3. Сохраните и перезапустите R, если он у вас был открыт.

Другие вопросы по тегам