Rprofile.site में .libPaths का उपयोग करके R डिफ़ॉल्ट पुस्तकालय पथ बदलें


205

मैं विंडोज पर आर चला रहा हूं, प्रशासक के रूप में नहीं। जब मैं एक पैकेज स्थापित करता हूं, तो निम्न कमांड काम नहीं करता है:

> 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"

क्या यह अजीब नहीं है?


आप वास्तव में install.packages("zoo")काम नहीं करता है पर थोड़ा विस्तार कर सकते हैं ? त्रुटि संदेश, आदि?
जोरान

1
@joran मैंने कोशिश करने पर त्रुटि संदेश जोड़ा install.packages("zoo")--- लेकिन वह मेरा असली सवाल नहीं है, जो इस बारे .libPaths()में Rprofile.siteकाम नहीं करता है।
मुझे

1
अगर आप R Studio की जगह RGui का उपयोग करते हैं तो क्या आपको भी यही परेशानी है?
दासन

6
R की लाइब्रेरी उन फ़ोल्डरों के लिए डिफ़ॉल्ट क्यों है, जिन्हें व्यवस्थापक अनुमति की आवश्यकता है ?! निश्चित रूप से उपयोगकर्ता की होम डायरेक्टरी
जियोथेक्टरी

superuser.com/questions/749283/… ~ संपादित करें। / .Renviron R_LIBS_USER = / कुछ / पथ
bowen.li

जवाबों:


171

मैं आमतौर पर अपने सभी पैकेजों को एक पुस्तकालय में रखने की कोशिश करता हूं, लेकिन अगर आप एक पुस्तकालय जोड़ना चाहते हैं तो मौजूदा पुस्तकालय पथ में नए पुस्तकालय (जो आपके फाइल सिस्टम में पहले से मौजूद होना चाहिए) को क्यों नहीं जोड़ना चाहिए?

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

या (और यह नए पैकेज डालने के लिए पहला स्थान प्राप्त करेगा)

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

तब मुझे मिलता है (कम से कम जब मैंने इसे मूल रूप से लिखा था):

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

.libPathsसमारोह अधिकांश अन्य nongraphics कार्यों से थोड़ा अलग है। यह साइड-इफेक्ट के जरिए काम करता है। फ़ंक्शन Sys.getenvऔर Sys.setenvआर रिपोर्ट और परिवर्तन आर पर्यावरण चर अलग हो गए हैं, लेकिन .libPathsया तो रिपोर्ट कर सकते हैं या अपने लक्ष्य को बदल सकते हैं।

R स्टार्टअप प्रक्रिया के बारे में जानकारी ?Startupमदद पृष्ठ पर पढ़ी जा सकती है और इसमें RStudio सामग्री है: https://support.rstudio.com/hc/en-us/articles/200549016-Customizing-RStudio

आपके मामले में ऐसा प्रतीत होता है कि RStudio Rprofile.site सेटिंग्स का सम्मान नहीं कर रहा है या शायद पढ़कर ओवरराइड कर रहा है। RStudio सेटिंग RStudio के किसी एक डिफॉल्ट से है। यह भी उल्लेख किया जाना चाहिए कि इस ऑपरेशन से परिणाम भी कॉल की सामग्री को जोड़ता है .Libraryऔर .Library.site, जो आगे कारण है कि एक RStudio- (या कोई अन्य IDE या नेटवर्क स्थापित) होस्ट किए गए R अलग व्यवहार प्रदर्शित कर सकता है।

चूंकि Sys.getenv()R प्रक्रिया के लिए वर्तमान सिस्टम वातावरण देता है, आप लाइब्रेरी और अन्य रास्तों को देख सकते हैं:

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

स्टोर करने और एक्सेस करने के लिए जो दो मामले हैं (अब एक लिनक्स बॉक्स पर अलग हैं):

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()नए पुस्तकालयों को कस्टम फ़ोल्डर में जाने के लिए वेक्टर को उल्टा करने की आवश्यकता है
ज्येष्ठ

बहुत बढ़िया बिंदु। वास्तव में .libPaths-function का डिफ़ॉल्ट रूप से समान प्रभाव होता है। ओएसिस के बीच एक अंतर है कि कैसे ट्रेलिंग स्लैश को संभाला जाता है। (विंडोज पर ठीक नहीं है)। अन्य विकल्प मौजूद हैं। देखें?.libPaths
IRTFM

5
नया पथ वास्तव में फाइल सिस्टम में मौजूद है, अन्यथा इसे पुस्तकालय पथ में नहीं जोड़ा जाएगा
jarandaf

एक और अच्छी बात। यद्यपि फ़ंक्शन नाम अन्यथा का सुझाव देता है, आप पहले से जांच कर सकते हैं file.existsऔर केवल तभी आगे बढ़ सकते हैं जब पथ गायब नहीं हो।
IRTFM

3
मैंने यह किया और यह काम करता है, लेकिन ऐसा लगता है कि मुझे आर शुरू करने के लिए हर बार रास्ता बदलना पड़ता है। क्या यह दूसरों के लिए भी ऐसा ही है?
cyrusjan

214

उचित समाधान पर्यावरण चर R_LIBS_USERको आपके वांछित लाइब्रेरी फ़ोल्डर में फ़ाइल पथ के मान के लिए सेट करना है क्योंकि RStudio को एक Rprofile.site फ़ाइल को पहचानने के लिए विरोध किया जा रहा है।

R_LIBS_USERविंडोज में पर्यावरण चर सेट करने के लिए, कंट्रोल पैनल पर जाएं (सिस्टम गुण -> उन्नत सिस्टम गुण -> पर्यावरण चर -> उपयोगकर्ता चर) एक वांछित मान (आपके लाइब्रेरी फ़ोल्डर का पथ), जैसे

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

R_LIBS_USER सेट करना यह सुनिश्चित करेगा कि लाइब्रेरी RStudio को सीधे शुरू करने या किसी फ़ाइल को राइट-क्लिक करके और "Open with" में RStudio शुरू करने की परवाह किए बिना पहले .libPaths () में दिखाए।

यदि RStudio हमेशा RStudio शॉर्टकट पर क्लिक करके शुरू किया जाता है, तो Rprofile समाधान काम कर सकता है। इस स्थिति में, डिफॉल्ट वर्किंग डायरेक्टरी को उस डायरेक्टरी में सेट करना , जिसमें आपका Rprofile पर्याप्त हो। RStudio शुरू करने के लिए फ़ाइल पर क्लिक करने पर Rprofile समाधान काम नहीं करता है क्योंकि यह कार्यशील निर्देशिका को डिफ़ॉल्ट कार्यशील निर्देशिका से दूर बदल देता है।


2
उचित समाधान के लिए सहमत!
felixmc

14
निश्चित रूप से उचित समाधान। एकमात्र कैच यह है कि यदि आपका उपयोगकर्ता कोई व्यवस्थापक नहीं है (यदि आपके साथ यह समस्या शुरू होने की संभावना है तो मामला है), आपको कंट्रोल पैनल-> ​​उपयोगकर्ता खाते-> उपयोगकर्ता खाते-> मेरा परिवेश बदलें के माध्यम से अपने पर्यावरण चर को बदलना होगा चर।
डेविड मोय

1
क्या आप (होता है) लिनक्स कमांड लाइन में बराबर जानते हैं?
डिएगो-एमएक्स

5
ज़रूर, बस इन्हें अपने शेल वेरिएबल्स के रूप में सेट करें (bash में आप एडिट .bash_profileऔर / या कर सकते हैं .bashrc)। यहां देखें: unix.stackexchange.com/questions/117467/… वर्तमान सत्र के लिए इन्हें सेट करने के लिए केवल कंसोल में टाइप करेंexport R_LIBS_USER='directory_of_your_choice'
Paweł Rumian

2
नियंत्रण कक्ष के माध्यम से चर सेट करने के बजाय, मैंने R_LIB_USER के डिफ़ॉल्ट मान को Rprofile फ़ाइल में संशोधित किया है। यहाँ समाधान: मैं एक समान दृष्टिकोण के साथ आया था, इस प्रश्न के समाधान के रूप में प्रस्तुत किया गया है stackoverflow.com/questions/31707941/…
Marco

24

मैं .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"

यह मेरे लिए काम नहीं करता है (न ही बॉन्डेडडस्ट से समाधान)। मैंने एक txt फ़ाइल बनाई और इसे सहेज लिया। फ़ोल्डर में getwd () से हटाएं।
जॉन

2
@ मुझे विश्वास है कि हम एक ही बात कह रहे हैं।
मुझे

3
आर अपने से .Rprofile पढ़ता गृह निर्देशिका अपने से नहीं वर्तमान निर्देशिका।
Crt

मैं एक समान दृष्टिकोण के साथ आया था, इस प्रश्न के समाधान के रूप में प्रस्तुत किया गया है stackoverflow.com/questions/31707941/…
Marco

होम डायरेक्ट्रो को खोजने के Sys.getenv("HOME")लिए r कंसोल में r कमांड जारी करें । मुझे यकीन नहीं है कि अगर आपको वांछित आउटपुट मिलता है। मुझे लगता है कि वांछित आउटपुट यह है कि 42 ने अपने उत्तर में क्या दिखाया है stackoverflow.com/a/15170774/754550 । वह एक अलग तरीके से .libPaths का उपयोग करता है।
चमत्कारी


11

मैंने पाया कि मुझे लगता है कि यहां एक समाधान है (एसएफयू में कार्ल श्वार्ज का धन्यवाद) स्थायी रूप से एक व्यक्तिगत पुस्तकालय जोड़ने के लिए (आपको प्रत्येक सत्र को परिभाषित करने की आवश्यकता नहीं है) मान्यता प्राप्त है कि क्या R या Rstudio का उपयोग कर रहा है, और Rstudio इसे के रूप में मानता है मेरी मैक मशीन पर डिफ़ॉल्ट। मैंने इसे एसओ पर स्पष्ट रूप से नहीं देखा था, इसलिए मैंने उनके द्वारा प्रदान किए गए चरणों को संक्षेप में बताया, विंडोज के लिए और फिर मैक के लिए।

विंडोज 7 ओएस के लिए:

  1. उस ड्राइव पर निर्देशिका बनाएँ जहाँ आप अपनी निजी लाइब्रेरी चाहते हैं, जैसे C: \ User \ Rlibs (या कोई अन्य जिसे आप अनुमति देते हैं)

  2. नियंत्रण कक्ष सेटिंग्स को संपादित करने के लिए विंडोज सर्च बार में "अपने खाते के लिए पर्यावरण चर संपादित करें" पर जाएं / जाएं

  3. "पर्यावरण चर" खिड़की के बीच में "नया ..." पर क्लिक करें

  4. "नया उपयोगकर्ता चर" विंडो में, "चर नाम" के लिए R_LIBS टाइप करें , और आपके द्वारा बनाई गई व्यक्तिगत लाइब्रेरी निर्देशिका का मार्ग, जैसे C: \ User \ Rlibs

  5. ठीक पर क्लिक करें और आपको उपयोगकर्ता चर विंडो में चर / मान युग्म देखना चाहिए

  6. फिर से ठीक पर क्लिक करें

अब जब आप R (या Rstudio) शुरू करते हैं और कमांड टाइप करते हैं .libPaths() हैं, तो आपको अपने द्वारा बनाई गई व्यक्तिगत लाइब्रेरी और साथ ही आर सिस्टम लाइब्रेरी को देखना चाहिए।

मैक के लिए:

  1. अपने "होम" या "उपयोगकर्ता नाम" निर्देशिका में Rlibs नामक एक फ़ोल्डर बनाएँ

  2. टर्मिनल एप्लिकेशन लॉन्च करें

  3. प्रकार: echo "R_LIBS=~/Rlibs"> .Renvrionसुनिश्चित करें कि केस मैच हो।

  4. टाइप ls -aनिर्देशिका में फ़ाइलों की पूरी सूची देखने के लिए, जो अब शामिल होना चाहिए .Renvrion

  5. सत्यापित करें कि .Renviron फ़ाइल ठीक से सेट की गई है:more .Renviron

R / Rstudio लॉन्च करें और टाइप करें .libPaths()और आपको अपनी निजी लाइब्रेरी के लिए नया रास्ता देखना चाहिए।


8

यदि आपके पास व्यवस्थापक-अधिकार नहीं हैं, तो यह \ R-3.1.0 \ etcRprofile.site में स्थित -file को खोलने और जोड़ने के लिए भी सहायक हो सकता है :

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

यह .libPath()प्रारंभ में सीधे कमांड का मूल्यांकन करता है


4

मुझे यह समझने में असली परेशानी हुई है। जब मैंने अपने OS & Rstudio को अंतिम रूप से पुन: स्थापित किया, तो gorkypl ने सही समाधान दिया, लेकिन इस बार, मेरे पर्यावरण चर को हल नहीं किया।

R और Rstudio दोनों को अनइंस्टॉल किया, निर्देशिका C: \ R और C: \ Rstudio का निर्माण किया और फिर दोनों को पुनर्स्थापित किया।

R_LIBS_USER उपयोगकर्ता चर को अपनी पसंद की निर्देशिका (gorkypl के जवाब के अनुसार) को परिभाषित करें और लोड होने वाली उपयोगकर्ता चर के लिए अपनी मशीन को पुनरारंभ करें। ओपन Rstudio, त्रुटियों को दूर किया जाना चाहिए।

आप भी उपयोग कर सकते हैं Sys.setenv() R_LIBS_USER को अपनी वैकल्पिक लाइब्रेरी के पथ पर संशोधित लिए जो आसान है और आपको अपने कंप्यूटर को पुनरारंभ करने की आवश्यकता नहीं है।

यह देखने के लिए कि R_LIBS_USER क्या सेट है: ?Sys.getenv()

पढ़ना help(Startup)उपयोगी है।


2

यदि आपका डिफ़ॉल्ट पैकेज पुस्तकालय आर के नए संस्करण को स्थापित करने या किसी अन्य माध्यम से बदल दिया गया है, तो आप नीचे दिए गए आदेशों की सहायता से सभी पुस्तकालयों को सभी पैकेजों का उपयोग करने के लिए जोड़ सकते हैं। मौजूदा लाइब्रेरी पथ प्राप्त करें:

.libPaths()

अब, मौजूदा और पुराने पथ को सेट करें:

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

आशा करता हूँ की ये काम करेगा।



1

मैंने रीडमी पढ़ी। इसमें उन्होंने बताया कि कमांड लाइन में .libPaths () का उपयोग करें कि कौन से रास्ते हैं। मेरे पास पहले 2 पुस्तकालय पथ थे। जब मैंने कमांड .libpath ("C: / Program Files / R / R-3.2.4revised / पुस्तकालय") का उपयोग किया था, जहां मैं चाहता था, इसने लाइब्रेरी पथ को बदल दिया। जब मैंने कमांड लाइन में .libPaths () टाइप किया तो इसने मुझे सही रास्ता दिखाया। उम्मीद है की यह मदद करेगा


1

उबंटू पर, उपयोगकर्ता के लिए डिफ़ॉल्ट लाइब्रेरी पथ को बदलने का अनुशंसित तरीका , फ़ाइल R_LIBS_USERमें चर सेट करना है ~/.Renviron

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

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

ऊपर दिए गए लिंक को दोहरे उल्टे अल्पविराम से कॉपी करें

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

आपके डिफ़ॉल्ट पथ pakages स्थापित करने के लिए बदल जाएगा


0

यदि आप R में प्रवेश करते समय अपने पुस्तकालय पथ को स्थायी रूप से (.libPath) कहे बिना बदलना चाहते हैं, तो यह आपके लिए काम करता है:

  1. बनाएँ। अपने घर निर्देशिका के तहत लाभकारी। (~ / .Rprofile)

  2. प्रकार .libPaths(c( .libPaths(), "your new path" )) .Rprofile फ़ाइल, सहेजें।

  3. खुला आर (कोई निर्देशिका) और जाँच करें, बस टाइप करें .libPaths(), आप पा सकते हैं कि आपका लिबरय पथ अपडेट किया गया है!


-1

मैं इस पर गौर कर रहा था क्योंकि R को डिफ़ॉल्ट स्थान में स्थापित करने में समस्या हो रही थी और इसके बजाय संकुल को अस्थायी फ़ोल्डर में रखना था। यह Mcaffee समापन बिंदु सुरक्षा के लिए नवीनतम अद्यतन निकला जो जाहिरा तौर पर R के साथ समस्याएँ हैं। आप पैकेजों को स्थापित करते समय खतरे की सुरक्षा को अक्षम कर सकते हैं और यह ठीक से काम करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.