Rprofile.site .libPaths kullanarak R varsayılan kitaplık yolunu değiştirme başarısız


206

Yönetici olarak değil, Windows üzerinde R kullanıyorum. Bir paket yüklediğimde, aşağıdaki komut çalışmaz:

> 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

Bir paket yüklemek için bir kütüphane konumu belirtmem gerekiyor:

install.packages("zoo", lib="C:/software/Rpackages")

Bir paket yüklemek için kitaplık konumunu da belirtmem gerekiyor:

library("zoo", lib.loc="C:/software/Rpackages")

Tüm bu sorun değil, ama ben bir C:/software/Rpackagesşekilde kütüphane yoluna eklemek ve böylece her zaman yazmak zorunda değil görmek istedim .

Çevrimiçi arama yaparken, bunu yapmanın bir yolunun Rprofile.sitedosyayı düzenlemek ve satırı eklemektir.

.libPaths("C:/software/Rpackages")

Ancak, bunu yaptıktan ve RStudio'yu başlattıktan sonra, bu elde ettiğim çıktı

> .libPaths()
[1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library" 

'A .libPathseklediğim komutun Rprofile.sitebir etkisi yok gibi görünüyor! Neden böyle? Ya da daha önemlisi, kütüphane konumuna yazmadan paketleri yükleyip yükleyebilmem için sorunu nasıl düzeltebilirim?

Not: RStudio'yu başlatırsam, .libPaths()komut, olması gerektiği gibi çalışır

.libPaths("C:/software/Rpackages")
> .libPaths()
[1] "C:/software/Rpackages"               "C:/Program Files/R/R-2.15.2/library"

Bu garip değil mi?


Tam olarak nasıl install.packages("zoo")çalışmadığına dair biraz genişletebilir misiniz ? Hata mesajı vs.?
joran

1
@joran ben denemek hata mesajı eklendi install.packages("zoo")--- ama bu neden benim asıl soru, değil .libPaths()de Rprofile.siteiş yapmaz.
Seviyorum

1
R Studio yerine RGui kullanıyorsanız aynı sorunla karşılaşıyor musunuz?
Dason

6
R'nin kütüphane yolları neden yönetici izinleri gerektiren klasörlere varsayılan olarak ayarlanmıştır ?! Elbette kullanıcının ana dizini daha mantıklı olurdu
geotheory

superuser.com/questions/749283/… Düzenle ~ / .Renviron R_LIBS_USER = / some / path
bowen.li

Yanıtlar:


171

Genel olarak tüm paketlerimi tek bir kütüphanede tutmaya çalışıyorum, ancak bir kütüphane eklemek istiyorsanız neden yeni kütüphaneyi (zaten dosya sisteminizde olması gerekir) mevcut kütüphane yoluna eklemiyorsunuz?

.libPaths( c( .libPaths(), "~/userLibrary") )

Veya (ve bu userLibrary'yi yeni paketler koymak için ilk yer yapar):

.libPaths( c( "~/userLibrary" , .libPaths() ) )

Sonra alıyorum (en azından bunu ilk yazdığımda geri):

> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/2.15/Resources/library"
[2] "/Users/user_name/userLibrary"  

.libPathsFonksiyonu diğer çoğu nongraphics fonksiyonları biraz daha farklıdır. Yan etki ile çalışır. Fonksiyonları Sys.getenvve Sys.setenvbu rapor ve değişkenler ayrı bölünmüş olmuştur R ortamı değiştirmez ama .libPathsya bildirmek veya hedefini değiştirebilir.

R başlatma işlemiyle ilgili bilgiler ?Startupyardım sayfasında okunabilir ve şu adreste RStudio materyali bulunur: https://support.rstudio.com/hc/en-us/articles/200549016- Özelleştirme-RStudio

Sizin durumunuzda, RStudio'nun Rprofile.site ayarlarına uymadığı veya RStudio varsayılanlarından birinden bir .Rprofile ayarını okuyarak bunları geçersiz kıldığı görülüyor. Ayrıca, bu işlemin sonucunun çağrıların içeriğini de eklediği .Libraryve .Library.sitebu nedenle RStudio- (veya yüklü herhangi bir IDE veya ağ kurulu-) R'nin farklı davranışlar göstermesinin başka bir nedeni de belirtilmelidir.

Yana Sys.getenv()getiri R işlemi için mevcut sistem ortamı, kütüphane ve diğer yolları ile görebilirsiniz:

Sys.getenv()[ grep("LIB|PATH", names(Sys.getenv())) ]

Paketleri depolamak ve bunlara erişmek için önemli olan ikisi (şimdi bir Linux kutusunda farklıdır):

R_LIBS_SITE                          /usr/local/lib/R/site-library:/usr/lib/R/site-library:/usr/lib/R/library
R_LIBS_USER                          /home/david/R/x86_64-pc-linux-gnu-library/3.5.1/

12
c()Yeni kütüphanelerin özel klasöre gitmesini sağlamak için vektörü tersine
çevirmem gerekiyordu

Mükemmel nokta. Aslında .libPaths-fonksiyon varsayılan olarak aynı etkiye sahiptir. OS'ler arasında, sondaki eğik çizgilerin nasıl işlendiği konusunda da bir fark vardır. (Windows'ta sorun değil). Başka seçenekler de var. Bakınız?.libPaths
IRTFM

5
Yeni yolun aslında dosya sisteminde bulunması gerekir, aksi takdirde kütüphane yoluna
eklenmez

Başka bir iyi nokta. İşlev adı aksini file.existsbelirtmesine rağmen, önce yolun eksik olup olmadığını kontrol edebilir ve devam edebilirsiniz.
IRTFM

3
Bunu yaptım ve işe yarıyor, ama görünüşe göre R'yi her başlattığımda yolu değiştirmek zorundayım.
cyrusjan

215

Uygun çözüm, R_LIBS_USERRStudio'nun bir Rprofile.site dosyasını tanımasını sağlamak yerine, ortam değişkenini istediğiniz kitaplık klasörüne giden dosya yolunun değerine ayarlamaktır .

R_LIBS_USERWindows'ta ortam değişkenini ayarlamak için, Denetim Masası'na (Sistem Özellikleri -> Gelişmiş sistem özellikleri -> Ortam Değişkenleri -> Kullanıcı Değişkenleri) istediğiniz bir değere (kütüphane klasörünüzün yolu) gidin, örn.

Variable name: R_LIBS_USER 
Variable value: C:/software/Rpackages  

R_LIBS_USER ayarı, RStudio'yu doğrudan başlatmaya veya bir dosyayı sağ tıklayıp RStudio'yu başlatmak için "Birlikte Aç" a bakılmaksızın kütüphanenin önce .libPaths () içinde görünmesini sağlar.

RStudio her zaman RStudio kısayolunu tıklatarak başlatılırsa Rprofile çözümü çalışabilir. Bu durumda, varsayılan çalışma dizinini Rprofile'nizi barındıran dizine ayarlamak yeterli olacaktır. Çalışma dizinini varsayılan çalışma dizininden değiştirdiğinden, RStudio'yu başlatmak için bir dosyaya tıklandığında Rprofile çözümü çalışmaz.


2
Uygun çözümü kabul etti!
felixmc

14
Kesinlikle uygun çözüm. Tek yakalama, kullanıcı bir yönetici değilse (muhtemelen bu sorunla başlamak için sorun yaşıyorsanız), ortam değişkenlerinizi Denetim Masası-> Kullanıcı Hesapları-> Kullanıcı Hesapları-> Ortamımı değiştir değişkenler.
David Moye

1
Linux komut satırında eşdeğerini biliyor musunuz?
Diego-MX

5
Elbette, bunları kabuk değişkenleriniz olarak ayarlayın (bash'da düzenleyebilir .bash_profileve / veya düzenleyebilirsiniz .bashrc). Buraya bakın: unix.stackexchange.com/questions/117467/… Bunları yalnızca geçerli oturum için ayarlamak için konsolda yazınexport R_LIBS_USER='directory_of_your_choice'
Paweł Rumian

2
Değişkeni kontrol panelinden ayarlamak yerine, Rprofile dosyasında varsayılan R_LIB_USER değerini değiştirdim. İşte çözüm: Benzer bir yaklaşım buldum, çözüm bu soruya bir çözüm olarak sunuldu stackoverflow.com/questions/31707941/…
Marco

24

Kodu .Rprofilevarsayılan çalışma dizinindeki dosyaya yerleştirerek sorunu çözmeyi başardım .

İlk olarak, varsayılan çalışma dizininin yerini buldum

> getwd()
[1] "C:/Users/me/Documents"

Sonra .Rprofileiçinde aşağıdaki satırı içeren basit bir dosya yazmak için bir metin editörü kullandım

.libPaths("C:/software/Rpackages")

Son olarak, başlattığımda Rve çalıştırdığımda .libPaths()istenen çıktıyı alıyorum:

> .libPaths()
[1] "C:/software/Rpackages"               "C:/Program Files/R/R-2.15.2/library"
[3] "C:/Program Files/RStudio/R/library"

Bu benim için işe yaramıyor (BondedDust çözümü de işe yaramıyor). Bir txt dosyası oluşturdum ve getwd () klasöründeki .Rprofile olarak kaydetti.
John

2
@ John Ben aynı şeyi söylediğimize inanıyorum.
I Like Kodu

3
R, .URProfil'i CURRENT dizininizden değil, HOME dizininizden okur .
Crt

Benzer bir yaklaşım buldum, çözüm bu soruya bir çözüm olarak sunuldu stackoverflow.com/questions/31707941/…
Marco

Ev directroy'u bulmak için Sys.getenv("HOME")r konsolunda r komutunu verin . İstediğiniz çıktıyı alıp almadığınızdan emin değilim. Bence istenen çıktı 42 yanıtının stackoverflow.com/a/15170774/754550'de gösterdiği şeydir . .LibPaths'i çok farklı bir şekilde kullanıyor.
miracle173


11

Burada bir çözüm olduğunu düşündüğüm şeyi buldum (SFU'dan Carl Schwarz'a teşekkür ederim), kalıcı olarak (her oturumu tanımlamanız gerekmez) kişisel bir kütüphane eklemek için R veya Rstudio'nun kullanıldığını fark etti ve Rstudio'nun Mac makinemde varsayılan olarak. Bunu açıkça SO üzerinde ortaya koyduğunu görmemiştim, bu yüzden Windows ve daha sonra Mac için sağladıkları adımları özetledim.

Windows 7 işletim sistemi için:

  1. Sürücüde kişisel kitaplığınızın olmasını istediğiniz bir dizin oluşturun, örn. C: \ User \ Rlibs (veya izinlerine sahip olduğunuz başka bir dizin)

  2. Kontrol paneli ayarlarını düzenlemek için Windows arama çubuğunda "Hesabınız için ortam değişkenini düzenle" seçeneğini arayın / gidin

  3. "Çevresel Değişkenler" penceresinin ortasındaki "Yeni ..." seçeneğini tıklayın

  4. "Yeni Kullanıcı Değişkeni" penceresinde, "Değişken adı" için R_LIBS yazın ve oluşturduğunuz kişisel kütüphane dizininin yolunu yazın, örn. C: \ User \ Rlibs

  5. Tamam'ı tıklatın; Kullanıcı değişkenleri penceresinde Değişken / Değer çiftini görmelisiniz

  6. Tekrar Tamam'ı tıklayın

Şimdi R (veya Rstudio) 'yu başlattığınızda ve komutu yazdığınızda .libPaths(), oluşturduğunuz kişisel kütüphaneyi ve R sistem kütüphanesini görmelisiniz.

Mac için:

  1. "Ana Sayfa" veya "kullanıcı adı" dizininizde Rlibs adlı bir klasör oluşturun

  2. Terminal uygulamasını başlatın

  3. Tür: echo "R_LIBS=~/Rlibs"> .RenvrionVaka eşleştiğinden emin olun.

  4. Tip ls -adizindeki dosyaların tam listesini görmek için, şimdi içermelidir .Renvrion

  5. Doğrulayın .Renviron dosyası düzgün olarak şöyle belirlendi:more .Renviron

R / Rstudio'yu başlatın ve yazın .libPaths()ve kişisel kütüphanenizin yeni yolunu görmelisiniz.


8

Yönetici haklarınız yoksa Rprofile.site, \ R-3.1.0 \ etc dosyasında bulunan -file dosyasını açmak ve aşağıdakileri eklemek de yararlı olabilir:

.First <- function(){
  .libPaths("your path here")
}

Bu, .libPath()komutu doğrudan başlangıçta değerlendirir


4

Bunu anlamakta gerçekten zorlandım. gorkypl, OS ve Rstudio'umu en son yeniden kurduğumda yukarıdaki doğru çözümü verdi, ancak bu sefer çevre değişkenimi ayarlamak çözülmedi.

Hem R hem de Rstudio kaldırıldı, sonra C: \ R ve C: \ Rstudio dizinleri oluşturuldu.

R_LIBS_USER kullanıcı değişkenini tercih ettiğiniz dizine tanımlayın (gorkypl'nin cevabına göre) ve Kullanıcı değişkeninin yüklenmesi için makinenizi yeniden başlatın. Açık Rstudio, hatalar gitmiş olmalı.

Sys.setenv()R_LIBS_USER ürününü, daha kolay ve bilgisayarınızı yeniden başlatmanız gerekmeyen alternatif kitaplığınızın yolunda değiştirmek için de kullanabilirsiniz .

R_LIBS_USER'ın neye ayarlandığını görmek için: ?Sys.getenv()

Okuma help(Startup)faydalıdır.


2

Varsayılan paket kitaplığınız yeni bir R sürümü yüklendikten sonra veya başka bir yolla değiştirildiyse, aşağıdaki komutların yardımıyla tüm paketleri kullanmak için her iki kütüphaneyi de ekleyebilirsiniz. Mevcut kitaplık yolunu alın:

.libPaths()

Şimdi, mevcut ve eski yolu ayarlayın:

.libPaths(c(.libPaths(), "~/yourOldPath"))

Umarım yardımcı olur.


2

Yönetici haklarının olmadığı bir dizindeki R kitaplıklarınız için varsayılan klasörü değiştirmeniz yeterlidir;

.libPaths("C:/R/libs")

1

Benioku okudum. Bundan bahsettikleri, hangi yolların orada olduğunu kontrol etmek için komut satırında .libPaths () kullanın. Daha önce 2 kütüphane yolum vardı. İstediğim yerde .libpath ("C: / Program Files / R / R-3.2.4revised / library") komutunu kullandığımda, kütüphane yolunu değiştirdi. Komut satırına .libPaths () yazdığımda bana doğru yolu gösterdi. Bu yardımcı olur umarım


1

Ubuntu'da, bir kullanıcı için varsayılan kitaplık yolunu değiştirmenin önerilen yoluR_LIBS_USER , ~/.Renvirondosyadaki değişkeni ayarlamaktır .

touch ~/.Renviron
echo "R_LIBS_USER=/custom/path/in/absolute/form" >> ~/.Renviron

0
getwd()
# [1] "C:/Users/..../software/My R studio"

yukarıdaki bağlantıyı çift ters virgülle kopyala

.libPaths(new="C:/Users/..../software/My R studio")

Paketleri yüklemek için varsayılan yolunuz değişecek


0

R'ye her girdiğinizde kitaplık yolunuzu kalıcı olarak (.libPath () çağırmadan) değiştirmek istiyorsanız, bu benim için çalışır:

  1. ana dizininizde .Rprofile oluşturun. (~ / .Rprofile)

  2. yazın .libPaths(c( .libPaths(), "your new path" )) kaydet, .Rprofile dosyasında.

  3. R (herhangi bir dizin) açın ve kontrol edin, sadece yazın .libPaths(), libaray yolunuzun güncellendiğini bulabilirsiniz!


-1

R varsayılan konuma yükleme sorunları yaşıyordu ve bunun yerine sadece geçici klasöre paketleri koyarak çünkü bu içine bakıyordu. Görünüşe göre R ile ilgili sorunları olan Mcaffee Endpoint Security'nin en son güncellemesi olduğu ortaya çıktı.Paketleri yüklerken tehdit korumasını devre dışı bırakabilirsiniz ve düzgün çalışır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.