سؤال

أندرو Gelman مؤخرا عن أسفه لعدم ترقية سهلة عملية R (ربما أكثر أهمية على ويندوز من لينكس).هل من أحد لديه خدعة جيدة للقيام الترقية من تثبيت البرنامج على نسخ جميع الإعدادات/حزم ؟

هذا الاقتراح الوارد في التعليقات هو ما لقد تم استخدام في الآونة الأخيرة.أولا يجب تثبيت الإصدار الجديد ، ثم قم بتشغيل هذا في القديم verion:

#--run in the old version of R
setwd("C:/Temp/")
packages <- installed.packages()[,"Package"]
save(packages, file="Rpackages")

تليها في هذا الإصدار الجديد:

#--run in the new version
setwd("C:/Temp/")
load("Rpackages")
for (p in setdiff(packages, installed.packages()[,"Package"]))
install.packages(p)
هل كانت مفيدة؟

المحلول

فقط للتأكد من اكتمالها ، هناك بعض الطرق لمنع لكم من الحصول على هذه المشكلة.كما ديرك قال: حفظ عروضكم في دليل آخر على جهاز الكمبيوتر الخاص بك.

install.packages("thepackage",lib="/path/to/directory/with/libraries")

يمكنك تغيير الافتراضي .Library القيمة باستخدام الدالة .libPaths أيضا

.libPaths("/path/to/directory/with/libraries")

هذا سوف يضع هذا المسار باعتباره القيمة الأولى في .Library متغير, وجعله الافتراضي.

إذا كنت ترغب في أتمتة هذه كذلك, يمكنك تحديد هذا في Rprofile.موقع الملف الذي تجده في /etc/ دليل R بناء.ثم فإنه سيتم تحميل تلقائيا في كل مرة R الأحمال, و كنت لا داعي للقلق حول ذلك أي أكثر من ذلك.يمكنك فقط تثبيت وتحميل الحزم من الدليل المحدد.

أخيرا لدي بعض التعليمات البرمجية المضمنة في Rprofile.الموقع السماح لي تثبيت كافة حزم عند تثبيت جديد الإصدار R.عليك فقط أن قائمة لهم قبل تحديث جديد الإصدار R.أفعل ذلك باستخدام .الملف RData تحتوي على قائمة محدثة بكل حزم.

library(utils)

## Check necessary packages
load("G:\Setinfo\R\packagelist.RData") # includes a vector "pkgs"
installed <- pkgs %in% installed.packages()[, 'Package']
if (length(pkgs[!installed]) >=1){
  install.packages(pkgs[!installed])
}

لقد جعل packagelist.RData طريق تحديد .Last() في Rprofile.الموقع.هذه التحديثات حزمة القائمة إذا قمت بتثبيت بعض :

.Last <- function(){
  pkgs <- installed.packages()[,1]
  if (length(pkgs) > length(installed)){
    save(pkgs,file="G:\Setinfo\R\packagelist.RData")
  }
}

عندما أقوم بتثبيت جديد الإصدار R ، أنا فقط إضافة العناصر الضرورية إلى Rprofile.موقع الملف و جميع حزم تثبيت.يجب أن ضبط Rprofile.الموقع على كل حال (باستخدام مجموع التناقضات ، إضافة رمز إضافية عن Tinn-R, هذه الأشياء), حتى انها ليست حقا عمل إضافي.فإنه يأخذ فقط الوقت الإضافي تثبيت جميع الحزم من جديد.

وهذا الجزء الأخير هو ما يعادل ما يعطى في السؤال الأصلي كحل.أنا لا داعي للقلق حول الحصول على "تثبيت" القائمة الأولى.

مرة أخرى, هذا لا يعمل لا تشوبه شائبة إذا كان لديك الحزم التي لم يتم تثبيتها من كران.ولكن هذا الكود بسهولة للتمديد لتشمل أولئك أيضا.

نصائح أخرى

وهذا هو السؤال القديم بالطبع ولكن قد تكون هناك إجابة سهلة الجديدة (العمل فقط ويندوز)، التي وجدت فقط.

install.packages("installr")
require(installr)
updateR()

وأفضل طريقة للقيام بذلك هي من النظام RGui. وسيتم تحويل كل ما تبذلونه من الحزم إلى مجلد جديد وسيتم حذف الرسائل القديمة أو حفظها (يمكنك اختيار إما). ثم بمجرد فتح RStudio مرة أخرى، فإنه على الفور تدرك أنك تستخدم نسخة محدثة. بالنسبة لي هذا العمل وكأنه سحر،

<وأ href = "http://www.r-statistics.com/2013/03/updating-r-from-r-on-windows-using-the-installr-package/" يختلط = "نوفولو noreferrer "> مزيد من المعلومات عن {} installr هنا .

وسيمون

اثنين اقتراحات سريعة:

  1. استخدام غابور هو batchfiles والتي يقال تشمل الأدوات المساعدة مثلهذا السائبة مكتبة الترحيل.التحذير:أنا لم تستخدم لهم.

  2. لا تثبيت المكتبات داخل 'filetree' من تثبيت الإصدار R.على النوافذ أنني قد وضعت R في C:/opt/R/R-$النسخة ولكن وضع جميع المكتبات في C:/opt/R/library/ استخدام المقتطف التالي كما أنه يخفف من المشكلة في المقام الأول:

$ cat .Renviron         # this is using MSys/MinGW which looks like Cygwin  
## Example .Renviron on Windows    
R_LIBS="C:/opt/R/library"

الطريقة المقترحة أعلاه لا يعمل تماما إذا كان لديك الحزم التي ليست من كران.على سبيل المثال شخصية حزمة أو حزمة تحميلها من غير كران الموقع.

بلدي الأسلوب المفضل على ويندوز (الترقية 2.10.1 إلى 2.11.0):

  1. تثبيت R-2.11.0
  2. نسخ R-2.10.0/library/* إلى R-2.11.0/library/
  3. الإجابة "لا" يطالب أطلب منك إذا كان حسن الكتابة.
  4. تبدأ R 2.11.0
  5. تشغيل الأوامر R update.packages()

فيما يتعلق الحل الواردة في السؤال ، فإنه قد لا يكون من السهل تشغيل نسخة قديمة من R إذا كان لديك بالفعل تثبيت الإصدار الجديد.في هذه الحالة ، يمكنك إعادة تثبيت كافة حزم المفقودة من السابق ص الإصدار على النحو التالي.

# Get names of packages in previous R version
old.packages <- list.files("/Library/Frameworks/R.framework/Versions/3.2/Resources/library")

# Install packages in the previous version. 

# For each package p in previous version...
    for (p in old.packages) {
      # ... Only if p is not already installed
      if (!(p %in% installed.packages()[,"Package"])) {
        # Install p 
        install.packages(p) 
      }
    }

(لاحظ أن حجة list.files() في السطر الأول من التعليمات البرمجية يجب أن يكون المسار إلى مكتبة الدليل السابق ص الإصدار ، حيث جميع المجلدات من الحزم في النسخة السابقة هي.في بلدي الحالي ، "/Library/Frameworks/R.framework/Versions/3.2/Resources/library".هذا وسوف تكون مختلفة السابقة إذا كان R الإصدار 3.2 ، أو إذا كنت على ويندوز.)

على if بيان يجعل التأكد من أن حزمة لا إذا كان مثبتا

  • انها مثبتة بالفعل في الإصدار R ، أو
  • تم تثبيت التبعية من حزمة مثبتة في السابق التكرار من for حلقة.

وبعد اقتراح ديرك، وهنا بعض التعليمات البرمجية R للقيام بذلك على ويندوز: <لأ href = "http://www.r-statistics.com/2010/04/changing-your-r-upgrading-strategy-and -The-ص-رمز إلى افعل ذلك على النوافذ / "يختلط =" نوفولو noreferrer "> كيفية ترقية بسهولة R على ويندوز XP

وتحديث (15.04.11): لقد كتبت وظيفة أخرى حول هذا الموضوع، موضحا كيفية التعامل مع القضايا المشتركة لل<لأ href = "http://www.r-statistics.com/2011/04/how-to -upgrade-ص-في-ويندوز 7 / "يختلط =" نوفولو noreferrer "> تطوير R على ويندوز 7

اثنين من الخيارات:

  1. تنفيذ جوابي هنا
  2. إذا كنت تستخدم R تحت الكسوف مع StatET, فتح تشغيل تكوينات, انقر على وحدة التحكم التبويب في مربع يسمى R مقتطف تشغيل بعد بدء التشغيل إضافة هذا السطر مع اختيارك من الدليل: .libPaths("C:/R/library")

وأنا على ويندوز 8 ولسبب غريب، وأنا لا يمكن أبدا تثبيت حزم باستخدام وصلات الانترنت بلدي.

وعموما أنا تثبيته باستخدام ملف .zip من كرا.

وبعد أن ذهب من R 3.2.5 إلى 3.3.1 R.

وأنا ببساطة نسخ حزم من

وC:\Path\to\packa\R\win-library\3.2 إلى C:\Path\to\packa\R\win-library\3.3.

وبعد ذلك إعادة تشغيل الدورة R. عملت تماما. أنا لم التحقق إذا ALL حزم تعمل بشكل جيد. ولكن، تلك راجعت تعمل بشكل جيد تماما. نأمل أن يكون هذا الإختراق يعمل من أجل الجميع.

وابتهاج.

والجواب المقبول يمكن أن تعمل إذا كان لديك بصيرة، ولكني بالفعل حصلت على التخلص من النسخة القديمة حتى لم يكن قادرا على اتباع هذه الاتجاهات. الخطوات الموضحة أدناه عمل لرفع مستوى OSX من 2.1 و 3.1.

ومحدث: للحصول على دليل لإصدار أحدث (بدلا من الكتابة في 3.1 أو 3.2) يمكنك استخدام الأوامر التالية. ثانية واحدة يحول مباشرة إلى R-متغير، وتخطي . و.. و.DS_Store، الاستخدام:

OLD=$(ls -d /Library/Frameworks/R.framework/Versions/*.* |tail -n 2 | head -n 1)Resources/library/
echo "packages = c(\"`ls $OLD | tail +4| paste -s -d ',' - | sed -E 's|,|\",\"|'g`\")" | tr -d "/" 

(إضافة |pbcopy إلى نهاية لنسخه مباشرة إلى ماك الحافظة)

وثم في غضون <م> R يمكنك لصق هذا المتغير الذي تم إنشاؤه. وبمجرد أن يتم تعريفه في النسخة الجديدة من R، يمكنك حلقة من خلال الحزم المثبتة من الإرشادات المذكورة أعلاه ...

for (p in setdiff(packages, installed.packages()[,"Package"]))
   install.packages(p, dependencies=TRUE, quiet=TRUE, ask=FALSE)

وبالنسبة لي هذه الصفحة غير جيدة الشبكي : //www.r-statistics.com/2013/03/updating-r-from-r-on-windows-using-the-installr-package/ أو خيار آخر هو مجرد تثبيت خيار جديد وفي المباراة النهائية التي وضعت، على سبيل المثال في ويندوز في جهاز الكمبيوتر الخاص بي

و.libPaths (ج ( "D: /Documents/R/win-library/3.2" "C: / ملفات البرنامج / R / R-3.2.3 / مكتبة" "C: / ملفات البرنامج / R / R-3.2.0 / مكتبة" "D: /Documents/R/win-library/2.15" )

وكل مسار من النسخة الأخيرة في حالتي أنا وضعت دائما الطريق الأول هو "D: /Documents/R/win-library/3.2" التي يتم إصلاحها ثم أضع البعض لأنك لا تحتاج إلى نسخ أو نقل أية حزم، في بلدي sugest فقط الذي يطلق عليه

linux + bash + debian + apt المستخدمين:

  1. إذا كنت تركيب/ترقية إلى أحدث إصدار R, ثم أننا يمكن أن نفترض لديك root الأذونات.(ليس من الضروري فقط يجعل العملية أسهل كثيرا;الاتساق النصي أدناه يستخدم sudo بالنسبة كل تثبيت.) كما R حزم أيضا تثبيت root, وبالتالي فمن الجائز وضع هذه في /usr/local/.

  2. الدعوة إلى curl أدناه يفترض أنك بالفعل مهتمة في sid الإفراج عن R, أحدث غير مستقرة إصدار (كما هو مطلوب عند بناء/فحص R حزمة) أي

    cat /etc/apt/sources.list | grep 'sid' || exit 1

    على الرغم من أن هذا يمكن بسهولة استبدال مؤخرا الإصدار المستقر مثلا buster.

  3. ملاحظة أنني لا باستخدام الرئيسية كما هو عادة ينصح.هذا ليس ضروريا ، خاصة إذا كان (كما في النص الذي يتبع) نقوم بتثبيت حزم داخل R نفسها (Rscript -e أدناه).أيضا, هذه المفاتيح الميل إلى كسر/تتغير كل بضع سنوات.وهكذا, يمكنك بالطبع أيضا أن أضيف ما يلي مقدمة الملف R.sh وهي كما يلي:

    sudo apt-key adv --keyserver keyserver.ubuntu.com \ --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9

  4. على array من R حزم من الواضح أنها ليست شاملة ولكن يعطي بعض الأمثلة التي أنا شخصيا تجد من المفيد.جديد تثبيت/ترقية مع debian حزمة r-recommended, كما أدناه ، يجب أن تعطي أحدث نسخة من كل معيار 'أوصت' حزم (مثلا ، survival).أعتقد قد يكون هناك تأخر طفيف بين كران الإفراج تحديثا ذات الصلة debian الحزمة.وبالتالي ، قد ترغب في إضافة بعض من هذه array أدناه إذا كان وجود أحدث إصدار من "الموصى به" R الحزمة الأساسية.

  5. على debian حزم المثبتة في عملية أدناه هي أيضا ليست أساسية (باستخدام r-base) ولا حصرية ولكن توفر أي.من 'إضافات' التي هي مهمة معقولة لا.من R حزم.

على أي حال...ضع ما يلي في R.sh:

sudo apt update && sudo apt --yes full-upgrade
sudo apt install --yes libappstream4 curl
### ov1 = online version; lv1 = local version (i.e. currently installed)
ov1=$(curl --silent --url https://packages.debian.org/sid/r-base |
    grep 'meta name=\"Keywords\"' |
    grep --only-matching '[0-9].*[0-9]') ; echo $ov1
## command -v = print a description of COMMAND similar to the `type' builtin
## && = if prior command succeeds, then do; || = if prior fails, then do
command -v 'R --version' &&
    lv1=$(R --version |
              grep --only-matching '[0-9\.]*[0-9]' |
              ## || = otherwise
              head -1) ||
        lv1=0
## 'lt' = less than
if dpkg --compare-versions "$lv1" 'lt' "$ov1" 
then ## declare -a = indexed array
     declare -a deb1=('r-base' 'r-base-dev' 'r-recommended')
     for i in "${deb1[@]}"
     do sudo apt install --yes "$i"
     done
fi
### certain Debian packages are required by 'R' so best have these first
sudo apt install --yes ccache libcairo2-dev libxml2-dev libcurl4-openssl-dev \
     libssl-dev liblapack-dev libssl-dev
declare -a pkg1=('data.table' 'ggplot2' 'knitr' 'devtools' 'roxygen2')
## installing as 'root' so these are installed in
Rscript -e ".libPaths()[1]"
for i in "${pkg1[@]}"
do sudo Rscript -e "install.packages('$i', dependencies=TRUE)"
done
### other useful additions
sudo apt install --yes libblas-dev libboost-dev libarmadillo-dev \
     jags pandoc pandoc-citeproc 
sudo apt update && sudo apt full-upgrade

ثم تنفيذ ذلك ، على سبيل المثالعلى افتراض في الدليل بالفعل: source R.sh.

تثبيت حزم (سواء debian أو R) واحدة تلو الأخرى في حلقة من قذيفة غير فعالة إلى حد ما ، ولكن يسمح أبسط تتبع الأخطاء, IMHO.قد يستغرق بعض الوقت اعتمادا على لا.من R حزم لذا ربما أبسط السماح بتشغيل بين عشية وضحاها...

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top