2016-06-22 3 views
1

Когда я проверяю R среды я получил:Полемика по пути R_LIBS_USER

> Sys.getenv("R_LIBS_USER") 
[1] "~/R/x86_64-pc-linux-gnu-library/3.3" 

Но когда я cd в каталог, кажется, нет такой путь вообще:

[email protected]:~/R/x86_64-pc-linux-gnu-library$ ll -a 
total 12 
drwxr-xr-x 3 dz33 dz33 4096 Jul 2 2015 . 
drwxr-xr-x 3 dz33 dz33 4096 Jul 10 2015 .. 
drwxr-xr-x 64 dz33 dz33 4096 Mar 30 16:41 3.2 

Как вы можете видеть существует только каталог /3.2, но /3.3. Кто-нибудь знает, почему и как изменить на 3.2 или настроить 3.3? Оказывается, моя R версия является последней:

> R.Version() 
$platform 
[1] "x86_64-pc-linux-gnu" 

$arch 
[1] "x86_64" 

$os 
[1] "linux-gnu" 

$system 
[1] "x86_64, linux-gnu" 

$status 
[1] "" 

$major 
[1] "3" 

$minor 
[1] "3.0" 

$year 
[1] "2016" 

$month 
[1] "05" 

$day 
[1] "03" 

$`svn rev` 
[1] "70573" 

$language 
[1] "R" 

$version.string 
[1] "R version 3.3.0 (2016-05-03)" 

$nickname 
[1] "Supposedly Educational" 

ответ

3

Переменная R_LIBS_USERявляется необязательным и, если он установлен, будет предварять путь к библиотеке (который отображается .libPaths()).

Может быть, я в меньшинстве, но на системах я смотрю после того, как я пытаюсь сняты сR_LIBS_USER, так что я получаю

R> .libPaths() 
[1] "/usr/local/lib/R/site-library" "/usr/lib/R/site-library" 
[3] "/usr/lib/R/library"   
R> 

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

Делают это также делает прочь с версионированных директорий (т.е. 3.2/ против 3.3/) Вы видели.

Более подробная информация находится в help(Startup).

+1

Интересная политика в отношении R, обеспечивающая применение новейших версий для всех. (Я не согласен.) Вы находите, что людям нужно использовать такие стратегии, как «контрольно-пропускной пункт», чтобы они не неосознанно обновляли версии? (Кроме того, если путь '/ usr/local/...' не использует версированные каталоги, совместим ли он с обновлениями R, скажем от 3.2 до 3.3?) – r2evans

+0

Спасибо, @Dirk! Причина, по которой я спрашивал об этом, - это ошибка, когда я пытался локально установить пакет: «R CMD INSTALL vimcom_0.9-93.tar.gz» Ошибка в библиотеке (vimcom): нет пакета под названием ' vimcom'', но 'vimcom_0.9-93.tar.gz' находится в директории физически. –

+3

"Принудительное исполнение"? Как насчет «предложения»? Я не поклонник контрольно-пропускного пункта, packrat, а что нет. Мне повезло в течение 10 лет с R, полагаясь на пакеты с разумными сопровождающими, которые не нарушают свои API. –