2016-10-05 2 views
2

При попытке установить пакет в R, и вы не имеете права доступа к пути к библиотеке по умолчанию, R спросит вас:автоматически создавать личную библиотеку в R

Хотите ли вы использовать персональный библиотека вместо этого?

Вы хотите создать личную библиотеку '~/path' для установки пакетов ?

Однако, если вы используете Rscript, эти сообщения не будут отображаться, и установка завершится с ошибкой. Я мог бы предопределить конкретный путь и указать install.packages, чтобы использовать его, но я не хочу создавать дополнительный путь к библиотеке, который был бы специфичен для этого Rscript. Я просто хочу использовать личную библиотеку по умолчанию. Есть ли способ заставить создать личную библиотеку, не требуя взаимодействия?

+1

Обновление '.libPaths()'? – zx8754

+0

@ zx8754 к чему? – burger

+4

Вы должны полностью прочитать 'help (". LibPaths ")', на который ссылается help на 'install.packages'. _ «Путь поиска библиотеки инициализируется при запуске из переменной среды« R_LIBS »(который должен представлять собой список каталогов, разделенных двоеточиями, на которых коренируются деревья R-библиотек), за которыми следуют те, которые находятся в переменной среды« R_LIBS_USER ». в это время будет включено. По умолчанию 'R_LIBS' не установлен, а' R_LIBS_USER' установлен в каталог '' R/R.version $ platform-library/x.y'' из домашнего каталога (или '' Library/R/xy/library'' для сборки CRAN OS X), для R xyz'_ – hrbrmstr

ответ

3

Вы можете использовать Sys.getenv("R_LIBS_USER"), чтобы найти местонахождение локальной библиотеки.

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

# create local user library path (not present by default) 
dir.create(path = Sys.getenv("R_LIBS_USER"), showWarnings = FALSE, recursive = TRUE) 
# install to local user library path 
install.packages(p, lib = Sys.getenv("R_LIBS_USER"), repos = "https://cran.rstudio.com/") 
# Bioconductor version 
biocLite(p, suppressUpdates = TRUE, lib = Sys.getenv("R_LIBS_USER")) 

Как @hrbrmstr отметил в комментариях, это может быть не очень хорошая идея для установки пакетов, поэтому используйте их на свой страх и риск.

Смежные вопросы