Я запускаю R в Windows, а не как администратор. Когда я устанавливаю пакет, следующая команда не работает:
> install.packages("zoo")
Installing package(s) into ‘C:/Program Files/R/R-2.15.2/library’
(as ‘lib’ is unspecified)
Warning in install.packages :
'lib = "C:/Program Files/R/R-2.15.2/library"' is not writable
Чтобы установить пакет, я должен указать расположение библиотеки:
install.packages("zoo", lib="C:/software/Rpackages")
Чтобы загрузить пакет, я также должен указать расположение библиотеки:
library("zoo", lib.loc="C:/software/Rpackages")
Все это нормально, но я хотел посмотреть, могу ли я как-то добавить C:/software/Rpackages
к пути библиотеки, и поэтому не нужно вводить его каждый раз.
Как я искал в Интернете, я обнаружил, что один из способов сделать это - отредактировать файл Rprofile.site
и добавить строку
.libPaths("C:/software/Rpackages")
Однако после этого и запуска RStudio это результат, который я получаю
> .libPaths()
[1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library"
Команда .libPaths
, которую я добавил в Rprofile.site
, похоже, не имела никакого эффекта! Почему это так? Или что еще более важно, как я могу исправить проблему, чтобы я мог устанавливать и загружать пакеты без ввода в библиотеке местоположения?
Примечание: если я запускаю RStudio, команда .libPaths()
работает так, как предполагается
.libPaths("C:/software/Rpackages")
> .libPaths()
[1] "C:/software/Rpackages" "C:/Program Files/R/R-2.15.2/library"
Разве это не странно?
Обычно я стараюсь хранить все мои пакеты в одной библиотеке, но если вы хотите добавить библиотеку, то почему бы не добавить новую библиотеку в существующую библиотеку:
.libPaths( c( .libPaths(), "~/userLibrary") )
Тогда я получаю:
> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/2.15/Resources/library"
[2] "/Users/davidwinsemius/userLibrary"
Функция .libPaths
немного отличается от большинства других функций nongraphics. Он работает через побочный эффект. Функции Sys.getenv
и Sys.setenv
, которые сообщают и изменяют переменные среды R, разделены, но .libPaths
может сообщать или изменять свою цель. Информацию о процессе запуска R можно прочитать на странице справки ?Startup
, и есть материал RStudio по адресу: https://support.rstudio.com/hc/en-us/articles/200549016-Customizing-RStudio
В вашем случае кажется, что RStudio не соблюдает настройки Rprofile.site или, возможно, переопределяет их, читая параметр .Rprofile с одного из значений по умолчанию RStudio. Следует также отметить, что результат этой операции также добавляет содержимое вызовов к .Library
и .Library.site
, что является еще одной причиной того, что RStudio- (или любая другая IDE или сеть, установленная), размещенная R, может проявлять различное поведение.
c()
чтобы новые библиотеки переходили в пользовательскую папку
.libPaths
по умолчанию имеет тот же эффект. Существует также разница между операционными системами в том, как обрабатываются конечные слэши. (Не хорошо в Windows). Другие варианты существуют. Видите ?.libPaths
Правильное решение - установить переменную окружения R_LIBS_USER
в значение пути файла к нужной папке библиотеки, а не заставлять RStudio распознавать файл Rprofile.site.
Чтобы установить переменную среды R_LIBS_USER
в Windows, перейдите в Панель управления (Свойства системы → Дополнительные свойства системы → Переменные среды → Пользовательские переменные) до нужного значения (путь к папке библиотеки), например
Variable name: R_LIBS_USER
Variable value: C:/software/Rpackages
Настройка R_LIBS_USER гарантирует, что библиотека появится сначала в .libPaths() независимо от запуска RStudio напрямую или щелкнув правой кнопкой мыши файл и "Открыть с", чтобы запустить RStudio.
Решение Rprofile может работать, если RStudio всегда запускается щелчком по ярлыку RStudio. В этом случае будет установка рабочего каталога по умолчанию в каталог, в котором размещается ваш Rprofile. Решение Rprofile не работает при нажатии на файл, чтобы запустить RStudio, потому что это приводит к тому, что рабочий каталог отключается от рабочего каталога по умолчанию.
Мне удалось решить проблему, поместив код в файл .Rprofile
в рабочий каталог по умолчанию.
Сначала я нашел местоположение рабочего каталога по умолчанию
> getwd()
[1] "C:/Users/me/Documents"
Затем я использовал текстовый редактор для написания простого файла .Rprofile
со следующей строкой в нем
.libPaths("C:/software/Rpackages")
Наконец, когда я запустил R
и запустил .libPaths()
, я получил желаемый результат:
> .libPaths()
[1] "C:/software/Rpackages" "C:/Program Files/R/R-2.15.2/library"
[3] "C:/Program Files/RStudio/R/library"
https://superuser.com/questions/749283/change-rstudio-library-path-at-home-directory
Изменить ~/.Renviron
R_LIBS_USER=/some/path
Если у вас нет прав администратора, также может быть полезно открыть Rprofile.site
файл, расположенный в \R-3.1.0\etc, и добавить:
.First <- function(){
.libPaths("your path here")
}
Это оценивает команду .libPath()
непосредственно при запуске
Я нашел то, что я считаю решением здесь (спасибо Карлу Шварцу в SFU) за добавление персональной библиотеки, которая постоянно (вам не нужно определять ее каждый сеанс) распознает, используя ли R или Rstudio, и Rstudio рассматривает ее как по умолчанию на моем компьютере Mac. Я не видел, чтобы это было четко изложено в SO, поэтому я суммировал предоставленные шаги для Windows, а затем для Mac.
Для ОС Windows 7:
Создайте каталог на диске, где вы хотите иметь свою личную библиотеку, например, C:\User\Rlibs (или другой, к которому у вас есть разрешения)
Найдите или перейдите к "Изменить переменную среды для вашей учетной записи" в панели поиска Windows, чтобы изменить настройки панели управления.
Нажмите "Новый..." в середине окна "Переменные среды"
В окне "Новая переменная пользователя" введите R_LIBS для "Имя переменной" и путь к созданному вами каталогу личной библиотеки, например, C:\User\Rlibs.
Нажмите OK, и вы должны увидеть пару Variable/Value в окне переменных пользователя.
Нажмите OK еще раз
Теперь, когда вы запускаете R (или Rstudio) и вводите команду .libPaths()
вы должны увидеть созданную вами личную библиотеку, а также системную библиотеку R.
Для Mac:
В папке "Home" или "username" создайте папку с именем Rlibs
Запустите приложение "Терминал"
Тип: echo "R_LIBS=~/Rlibs">.Renvrion
Убедитесь, что регистр совпадает.
Введите ls -a
чтобы увидеть полный список файлов в каталоге, который теперь должен включать .Renvrion
Убедитесь, что файл .Renviron установлен правильно: more.Renviron
Запустите R/Rstudio и введите .libPaths()
и вы должны увидеть новый путь к вашей личной библиотеке.
У меня были реальные проблемы с пониманием этого. gorkypl дал правильное решение выше, когда я последний раз заново установил свою ОС и Rstudio, но на этот раз настройка моей переменной среды не решилась.
Удалены как R, так и Rstudio, создавая каталоги C:\R и C:\Rstudio, затем переустановить оба.
Определите пользовательскую переменную R_LIBS_USER в ваш предпочтительный каталог (в соответствии с ответом gorkypl) и перезагрузите компьютер для загрузки пользовательской переменной. Откройте Rstudio, ошибки должны исчезнуть.
Вы также можете использовать Sys.setenv()
, чтобы изменить R_LIBS_USER на путь вашей альтернативной библиотеки, который проще и не требует перезагрузки компьютера.
Чтобы узнать, для чего установлен R_LIBS_USER:
?Sys.getenv()
Чтение help(Startup)
полезно.
Если ваша библиотека пакетов по умолчанию была изменена после установки новой версии R или любым другим способом, вы можете добавить обе библиотеки для использования всех пакетов с помощью приведенных ниже команд. Получить существующий путь библиотеки:
.libPaths()
Теперь установите существующий и старый путь:
.libPaths(c(.libPaths(), "~/yourOldPath"))
Надеюсь, что это поможет.
Я прочитал readme. В этом они упомянули использование .libPaths() в командной строке, чтобы проверить, какие пути существуют. Раньше у меня было 2 пути библиотеки. Когда я использовал команду .libpath( "C:/Program Files/R/R-3.2.4revised/library" ), где я хотел, она изменила путь к библиотеке. Когда я снова набрал .libPaths() в командной строке, он показал мне правильный путь. Надеюсь, что это поможет
просто измените папку по умолчанию для ваших библиотек R в каталоге без прав администратора, например
.libPaths("C:/R/libs")
getwd()
# [1] "C:/Users/..../software/My R studio"
скопируйте вышеуказанную ссылку с двойной кавычкой
.libPaths(new="C:/Users/..../software/My R studio")
Ваш путь по умолчанию будет изменен для установки пакетов
Я изучал это, потому что у R были проблемы с установкой в местоположение по умолчанию, и вместо этого они просто помещали пакеты во временную папку. Это оказалось последним обновлением для Mcaffee Endpoint Security, которое, по-видимому, имеет проблемы с R. Вы можете отключить защиту от угроз при установке пакетов, и он будет работать правильно.
install.packages("zoo")
не работает? Сообщение об ошибке и т. Д.?install.packages("zoo")
- но это не мой настоящий вопрос, а именно о том, почему.libPaths()
вRprofile.site
не работает.