Rprofile.site এ .libPaths ব্যবহার করে আর ডিফল্ট লাইব্রেরি পাথ পরিবর্তন করুন কাজ করতে ব্যর্থ


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

যাইহোক, এটি করার পরে এবং আরস্টুডিও শুরু করার পরে এটি আমার প্রাপ্ত আউটপুট

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

.libPathsকমান্ড যে আমি যোগ করা Rprofile.siteকোনো প্রভাব ছিল বলে মনে হচ্ছে না! কেন এই ক্ষেত্রে? বা আরও গুরুত্বপূর্ণ বিষয়, আমি কীভাবে সমস্যাটি সমাধান করতে পারি যাতে আমি লাইব্রেরির অবস্থানটিতে টাইপ না করে প্যাকেজ ইনস্টল ও লোড করতে পারি?

দ্রষ্টব্য: যদি আমি আরস্টুডিও শুরু করি তবে .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
আর স্টুডিওর পরিবর্তে আরজিই ব্যবহার করলে আপনার কি একই সমস্যা হয়?
ডেসন

6
আর-র লাইব্রেরি কেন ফোল্ডারে ডিফল্টরূপে পাথগুলিতে প্রবেশ করে যেগুলির প্রশাসকের অনুমতি রয়েছে ?! নিশ্চয় ব্যবহারকারীর হোম ডিরেক্টরিটি আরও বোধগম্য হবে
ভূগোলিক

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রিপোর্ট করতে পারে বা এর লক্ষ্য পরিবর্তন করতে পারে।

আর স্টার্টআপ প্রক্রিয়া সম্পর্কিত তথ্য ?Startupসহায়তা পৃষ্ঠায় পড়তে পারেন এবং এখানে আরএসটিউডিও উপাদান রয়েছে: https://support.rstudio.com/hc/en-us/articles/200549016- কাস্টমাইজিং- আর স্টুডিও

আপনার ক্ষেত্রে এটি প্রদর্শিত হয় যে আরস্টুডিও Rprofile.site সেটিংসকে সম্মান করছে না বা সম্ভবত আরস্টুডিও ডিফল্টগুলির একটি থেকে .R প্রোফাইলে সেটিংস পড়ে এটি ওভাররাইড করছে। এটিও উল্লেখ করা উচিত যে এই অপারেশন থেকে প্রাপ্ত ফলাফলগুলি কলগুলির সামগ্রীগুলিও সংযোজন করে.Library এবং .Library.site, যা আরো যে কারণে একটি RStudio- (অথবা অন্য কোন আইডিই বা নেটওয়ার্ক installed-) হোস্ট করা আর বিভিন্ন আচরণ প্রদর্শন পারে।

যেহেতু Sys.getenv()আর প্রক্রিয়াটির জন্য বর্তমান সিস্টেমের পরিবেশটি দেয়, আপনি গ্রন্থাগার এবং অন্যান্য পাথগুলি এটির সাথে দেখতে পারেন:

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ফাংশনটির ডিফল্টরূপে একই প্রভাব থাকে। ট্রেলিং স্ল্যাশগুলি কীভাবে পরিচালনা করা হয় তাতে ওএসের মধ্যেও পার্থক্য রয়েছে। (উইন্ডোজ ঠিক আছে না)। অন্যান্য বিকল্প বিদ্যমান। দেখুন?.libPaths
আইআরটিএফএম

5
নতুন পাথটি আসলে ফাইল সিস্টেমে উপস্থিত থাকতে হবে, অন্যথায় এটি লাইব্রেরির পথে যুক্ত হবে না
jarandaf

আরেকটি ভাল পয়েন্ট। যদিও ফাংশনটির নামটি অন্যথায় প্রস্তাব দেয়, আপনি প্রথমে চেক করতে file.existsপারেন এবং পথটি অনুপস্থিত থাকলেই এগিয়ে যেতে পারেন।
আইআরটিএফএম

3
আমি এটি করেছি এবং এটি কাজ করে, তবে মনে হয় যে প্রতিবার আর শুরু করার সময় আমাকে পথ পরিবর্তন করতে হবে? অন্যদের ক্ষেত্রেও কি এটি একই?
সাইরাসজন

213

সঠিক সমাধান হ'ল পরিবেশ পরিবর্তনশীল সেট করা R_LIBS_USERকোনও আরএসস্টুডিও একটি আরআরফিল.সাইট ফাইল সনাক্ত করার বিপরীতে আপনার পছন্দসই লাইব্রেরী ফোল্ডারের ফাইলের মানের সাথে ।

R_LIBS_USERউইন্ডোজে পরিবেশের পরিবর্তনশীল সেট করতে কন্ট্রোল প্যানেলে (সিস্টেমের বৈশিষ্ট্য -> উন্নত সিস্টেমের বৈশিষ্ট্য -> পরিবেশের ভেরিয়েবল -> ব্যবহারকারীর ভেরিয়েবল) একটি পছন্দসই মানটিতে (আপনার লাইব্রেরির ফোল্ডারের পথে) যান, যেমন

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

আর_আইবিএস_আউএসআর সেট করা নিশ্চিত করবে যে লাইব্রেরি .libPaths () এ প্রথমে আরস্টুডিও শুরু করার আগে বা কোনও ফাইলের ডান-ক্লিক করে আর স্টুডিও শুরু করার জন্য "ওপেন" ক্লিক করে shows

আরস্টুডিও সর্বদা আরস্টুডিও শর্টকাটে ক্লিক করে শুরু করা হলে আরআরফোফিল সমাধানটি কাজ করতে পারে। এই ক্ষেত্রে, ডিরেক্টরির ডিফল্ট পরিশ্রমী ডিরেক্টরি সেটিং ঘর আপনার Rprofile যে যথেষ্ট হবে। আরস্টুডিও শুরু করার জন্য কোনও ফাইলে ক্লিক করার সময় আরপ্রফিল সমাধানটি কাজ করে না কারণ এটি ডিফল্ট ওয়ার্কিং ডিরেক্টরি থেকে দূরে কর্ম ডিরেক্টরিকে পরিবর্তন করে।


2
যথাযথ সমাধানে রাজি!
felixmc

14
অবশ্যই সঠিক সমাধান। কেবলমাত্র যদি আপনার ব্যবহারকারী প্রশাসক না হন (সম্ভবত আপনার যদি সমস্যাটি শুরু হয় তবে), আপনার পরিবেশ পরিবর্তনশীলগুলি নিয়ন্ত্রণ প্যানেল-> ব্যবহারকারী অ্যাকাউন্ট-> ব্যবহারকারী অ্যাকাউন্টগুলি-> আমার পরিবেশ পরিবর্তন করুন ভেরিয়েবল।
ডেভিড ময়ে

1
আপনি কি লিনাক্স কমান্ড লাইনের সমতুল্য জানেন?
দিয়েগো-এমএক্স

5
অবশ্যই, এগুলি কেবল আপনার শেল ভেরিয়েবল হিসাবে সেট করুন (ব্যাশে আপনি সম্পাদনা করতে পারেন .bash_profileএবং / অথবা .bashrc) : এখানে দেখুন unix.stackexchange.com/questions/117467/... বর্তমান সেশনের জন্য এই সেটিংস শুধুমাত্র কনসোলে টাইপ জন্যexport R_LIBS_USER='directory_of_your_choice'
Pawel Rumian

2
নিয়ন্ত্রণ প্যানেলের মাধ্যমে ভেরিয়েবল সেট করার পরিবর্তে, আমি আর-প্রোফাইলে ফাইলটিতে R_LIB_USER এর ডিফল্ট মানটি পরিবর্তন করেছি ified এখানে সমাধান: আমি একটি অনুরূপ পদ্ধতির সাথে হাজির হয়েছি, সমাধানটি এই প্রশ্নের সমাধান হিসাবে উপস্থাপন করা হয়েছে stackoverflow.com/questions/31707941/…
মার্কো

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"

এটি আমার পক্ষে কাজ করে না (বন্ডেডডাস্ট থেকেও সমাধান আসে না)। আমি একটি টেক্সট ফাইল তৈরি করেছি এবং এটি getwd () থেকে ফোল্ডারে .R প্রোফাইলে হিসাবে সংরক্ষণ করেছি।
জন

2
@ জন আমি বিশ্বাস করি যে আমরাও একই কথা বলছি।
আমি 21

3
আর আপনার থেকে .Rprofile সার্চ হোম ডিরেক্টরি আপনার কাছ থেকে না বর্তমান ডিরেক্টরি।
ক্র্ট

আমি একটি অনুরূপ পদ্ধতির সাথে হাজির হয়েছি, সমাধানটি এই প্রশ্নের সমাধান হিসাবে উপস্থাপন করা হয়েছে stackoverflow.com/questions/31707941/…
মার্কো

হোম ডিরেক্টরয়ের সন্ধান Sys.getenv("HOME")করতে r কনসোলে r কমান্ডটি জারি করুন । আপনি পছন্দসই আউটপুট পান কিনা তা নিশ্চিত নই। আমি মনে করি পছন্দসই আউটপুট হ'ল 42 তার উত্তরের stackoverflow.com/a/15170774/754550 এ যা দেখিয়েছিল । তিনি .libPaths কিছুটা আলাদাভাবে ব্যবহার করেন।
चमत्कार 173


11

আমি মনে করি যা আমি এখানে একটি সমাধান বলে মনে করি (এসএফইউতে কার্ল শোয়ার্জকে ধন্যবাদ) একটি ব্যক্তিগত লাইব্রেরি স্থায়ীভাবে যুক্ত করার জন্য (আপনাকে এটি প্রতিটি অধিবেশনটির সংজ্ঞা দিতে হবে না) আর বা রুস্তুডিও ব্যবহার করে কিনা তা স্বীকৃত এবং রস্তুদিও এটি হিসাবে বিবেচনা করে আমার ম্যাক মেশিনে ডিফল্ট। আমি এটিকে স্পষ্টভাবে এসওয়ের উপর ভিত্তি করে দেখিনি, তাই আমি উইন্ডোজ এবং তারপরে ম্যাকের জন্য তাদের প্রদত্ত পদক্ষেপগুলি সংক্ষেপে জানিয়েছি।

একটি উইন্ডোজ 7 ওএসের জন্য:

  1. ড্রাইভে একটি ডিরেক্টরি তৈরি করুন যেখানে আপনি নিজের ব্যক্তিগত লাইব্রেরি রাখতে চান, যেমন সি: \ ব্যবহারকারী l র্লিবস (বা অন্য যেটির কাছে আপনার অনুমতি রয়েছে)

  2. নিয়ন্ত্রণ প্যানেল সেটিংস সম্পাদনা করতে উইন্ডোজ অনুসন্ধান বারে "আপনার অ্যাকাউন্টের জন্য পরিবেশ পরিবর্তনশীল সম্পাদনা করুন" -এ অনুসন্ধান করুন / যান

  3. "পরিবেশগত পরিবর্তনশীল" উইন্ডোর মাঝখানে "নতুন ..." ক্লিক করুন

  4. "নতুন ব্যবহারকারীর পরিবর্তনশীল" উইন্ডোতে, "ভেরিয়েবল নাম" এর জন্য R_LIBS টাইপ করুন এবং আপনি যে ব্যক্তিগত লাইব্রেরি ডিরেক্টরি তৈরি করেছেন তার পথ, যেমন সি: \ ব্যবহারকারী \ রিলিব

  5. ওকে ক্লিক করুন এবং আপনার ব্যবহারকারী ভেরিয়েবল উইন্ডোতে চলক / মান জুটি দেখতে হবে

  6. আবার ঠিক আছে ক্লিক করুন

এখন যখন আপনি আর (বা Rstudio) শুরু করবেন এবং কমান্ডটি টাইপ করুন .libPaths() তখন আপনার তৈরি ব্যক্তিগত লাইব্রেরি পাশাপাশি আর সিস্টেমের লাইব্রেরিটি দেখতে হবে।

ম্যাকের জন্য:

  1. আপনার "হোম" বা "ব্যবহারকারীর নাম" ডিরেক্টরিতে Rlibs নামে একটি ফোল্ডার তৈরি করুন

  2. টার্মিনাল অ্যাপ্লিকেশন চালু করুন

  3. প্রকার: echo "R_LIBS=~/Rlibs"> .Renvrionনিশ্চিত করুন কেস ম্যাচগুলি।

  4. ls -aডিরেক্টরিতে ফাইলগুলির সম্পূর্ণ তালিকা দেখতে টাইপ করুন , যার মধ্যে এখন .Renvrion অন্তর্ভুক্ত করা উচিত

  5. .R পরিবেশ ফাইলটি সঠিকভাবে সেট করা হয়েছে তা যাচাই করুন :more .Renviron

আর / রুস্তুডিও চালু করুন এবং টাইপ করুন .libPaths()এবং আপনার ব্যক্তিগত লাইব্রেরিতে নতুন পথটি দেখতে পাওয়া উচিত।


8

আপনার যদি অ্যাডমিন-অধিকার না থাকে তবে এটি \ R-3.1.0 \ ইত্যাদিতেRprofile.site অবস্থিত -ফাইলটি খুলতে এবং যুক্ত করতে সহায়ক হতে পারে :

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

এটি .libPath()সরাসরি শুরুতে কমান্ডটি মূল্যায়ন করে


4

এটি বুঝতে আমার আসলেই সমস্যা হয়েছিল। আমি সর্বশেষে আমার ওএস ও রিস্তুডিও পুনরায় ইনস্টল করার পরে গর্কিপল উপরে সঠিক সমাধান দিয়েছিলেন তবে এবার আমার পরিবেশের পরিবর্তনশীলটিকে সমাধান করে নি setting

আর এবং রুস্তুডিও উভয়ই আনইনস্টল করে ডিরেক্টরি সি: \ আর এবং সি: creating রস্তুডিও দুটি পুনরায় ইনস্টল করে।

আপনার পছন্দসই ডিরেক্টরিতে R_LIBS_USER ব্যবহারকারীর ভেরিয়েবল সংজ্ঞায়িত করুন (gorkypl এর উত্তর অনুসারে) এবং ব্যবহারকারী ভেরিয়েবল লোড হওয়ার জন্য আপনার মেশিনটি পুনরায় চালু করুন। আরস্তুডিও খুলুন, ত্রুটিগুলি চলে যাওয়া উচিত।

আপনি ব্যবহার করতে পারেন Sys.setenv() আপনার বিকল্প লাইব্রেরির পথে R_LIBS_USER সংশোধন করতেও করতে যা সহজ এবং আপনার কম্পিউটার পুনরায় আরম্ভ করার দরকার নেই।

R_LIBS_USER কী সেট করা আছে তা দেখতে: ?Sys.getenv()

পড়া help(Startup)দরকারী।


2

যদি আপনার ডিফল্ট প্যাকেজ লাইব্রেরি আর এর নতুন সংস্করণ ইনস্টল করার পরে বা অন্য কোনও উপায়ে পরিবর্তন করা হয়, আপনি নীচের কমান্ডগুলির সাহায্যে উভয় গ্রন্থাগারকে সমস্ত প্যাকেজ ব্যবহার করতে যুক্ত করতে পারেন। বিদ্যমান লাইব্রেরির পাথ পান:

.libPaths()

এখন, বিদ্যমান এবং পুরানো পথ নির্ধারণ করুন:

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

আশা করি এটা সাহায্য করবে.



1

আমি রিডমি পড়ি। এতে তারা কোন পাথ রয়েছে তা পরীক্ষা করতে কমান্ড লাইনে .libPaths () ব্যবহারের কথা উল্লেখ করেছেন। আমার আগে 2 টি লাইব্রেরি পাথ ছিল। যখন আমি যেখানে চাইতাম .libpath ("সি: / প্রোগ্রাম ফাইল / আর / আর -3.2 পুনর্বিবেচনা / গ্রন্থাগার") ব্যবহার করি, এটি লাইব্রেরির পথ পরিবর্তন করে। আমি যখন কমান্ড লাইনে .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")

প্যাকেজ ইনস্টল করার জন্য আপনার ডিফল্ট পাথ পরিবর্তন হবে


0

আপনি যদি আর প্রবেশের সময় প্রতিবারের জন্য .libPath () কল না করে স্থায়ীভাবে আপনার লাইব্রেরির পথ পরিবর্তন করতে চান তবে এটি আমার পক্ষে কাজ করে:

  1. আপনার বাড়ির ডিরেক্টরিতে প্রোফাইলে তৈরি করুন। (~ / .Rprofile)

  2. .libPaths(c( .libPaths(), "your new path" )) প্রাইভেট ফাইল টাইপ করুন, সংরক্ষণ করুন।

  3. আর (যে কোনও ডিরেক্টরি) খুলুন এবং চেক করুন, কেবল টাইপ করুন .libPaths(), আপনি খুঁজে পেতে পারেন আপনার লিবারে পথ আপডেট হয়েছে!


-1

আমি এটি সন্ধান করছিলাম কারণ আর ডিফল্ট লোকেশনটিতে ইনস্টল করতে সমস্যা হচ্ছিল এবং কেবলমাত্র প্যাকেজগুলি টেম্প ফোল্ডারে রেখে দিচ্ছিলাম। এটি ম্যাকাফী এন্ডপয়েন্ট সিকিউরিটির সর্বশেষ আপডেট হিসাবে প্রমাণিত হয়েছিল যা স্পষ্টতই আর এর সাথে সমস্যাযুক্ত।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.