การติดตั้งแพ็คเกจ R เวอร์ชันเก่ากว่า


134

ฉันพยายามใช้ Rpy2 และ ggplot2 แต่ได้รับข้อผิดพลาด หลังจากค้นหาข้อผิดพลาดทางออนไลน์บางครั้งฉันพบว่าข้อผิดพลาดเกิดขึ้นเนื่องจากมีการเปลี่ยนแปลงในแพ็คเกจ ggplot2 ที่ยังไม่แสดงใน Rpy2 (ตัวอย่างเช่นดูโพสต์นี้ (แก้ไข: ลิงก์ตายแล้ว))

ตอนนี้ฉันต้องติดตั้ง ggplot2 เวอร์ชันเก่ากว่า นี่คือรหัสเทียมสำหรับสิ่งที่ฉันต้องการ:

install.packages("ggplot2", version='0.9.1')

แต่install.packagesไม่ได้มีการversionโต้แย้ง . ฉันต้องทำอย่างไร?


ลองดูcheckBuiltไหม stackoverflow.com/questions/16503554/…
isomorphismes

คำตอบ:


150

ในการติดตั้งแพ็กเกจเวอร์ชันเก่าจากซอร์ส (ภายใน R):

packageurl <- "http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz"
install.packages(packageurl, repos=NULL, type="source")

หากยังไม่ได้ผลสำหรับคุณและคุณบน Windows, เหตุผลที่น่าจะเป็นการขาดของห่วงโซ่เครื่องมือที่เหมาะสมสำหรับการสร้าง / แพคเกจการรวบรวม โดยปกติคุณจะติดตั้งไบนารีที่คอมไพล์ไว้ล่วงหน้าจาก CRAN แต่จะเก็บเฉพาะแหล่งที่มาของแพ็คเกจเท่านั้นไม่ใช่ไบนารี [1]หมายความว่าคุณต้องติดตั้งRtoolsเพื่อให้คุณสามารถรวบรวมทุกอย่างในเครื่องได้ (หมายเหตุ: Rtools ไม่ใช่แพ็คเกจ R )

คำตอบของ @ shadow ด้านล่างยังทำให้เป็นกรณีที่คุณสามารถdevtools::install_version()ใช้ได้ นั่นเป็นความคิดที่ดีเช่นกัน แต่อาจต้องใช้ Rtools บน Windows ด้วย

ณ 18 กันยายน 2015, แพคเกจใหม่รุ่นได้ปรากฏตัวบน CRAN สิ่งนี้อาศัยเซิร์ฟเวอร์Revolution Analytics MRANเพื่อติดตั้งแพ็คเกจสำหรับเวอร์ชันหรือวันที่เฉพาะ:

# install yesterday's version of checkpoint, by date
install.dates('checkpoint', Sys.Date() - 1)

# install earlier versions of checkpoint and devtools
install.versions(c('checkpoint', 'devtools'), c('0.3.3', '1.6.1'))

นั่นมีข้อดีคือไม่ต้องใช้ Rtools เพื่อติดตั้งแพ็คเกจไบนารีบน Windows แต่จะใช้งานได้เฉพาะในช่วง 2014-09-17 (เมื่อ MRAN เปิดตัว)

ในการติดตั้งเวอร์ชันเก่าจากบรรทัดคำสั่ง (นอก R):

คุณยังสามารถติดตั้งแพ็กเกจโดยใช้R CMD INSTALLในบรรทัดคำสั่ง (Terminal, Command Prompt เป็นต้น) เมื่อคุณมีแหล่งแพ็กเกจ ("tarball") ในเครื่องของคุณเช่นใช้wget(ถ้าคุณมี):

wget http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz

หรือถ้าคุณใช้ Windows สิ่งที่เทียบเท่ากับการใช้ PowerShell จะเป็น:

(new-object System.Net.WebClient).DownloadFile("http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz", "./ggplot2_0.9.1.tar.gz")

หรือคุณสามารถดาวน์โหลดซอร์สจากไฟล์เก็บถาวร CRAN ผ่านเว็บเบราว์เซอร์ของคุณ

ในการติดตั้งจากไฟล์ในเครื่องคุณสามารถทำได้:

R CMD INSTALL ggplot2_0.9.1.tar.gz

สิ่งนี้ควรทำงานบนแพลตฟอร์มใดก็ได้ (โดยมีข้อแม้เดียวกัน - ดังที่กล่าวมา - เกี่ยวกับการต้องใช้ห่วงโซ่เครื่องมือสำหรับการสร้างแพ็คเกจ)


[1] นี่ไม่เป็นความจริงอีกต่อไป ตั้งแต่เดือนมีนาคม 2016 CRAN ได้เริ่มโฮสต์เซิร์ฟเวอร์ "CRAN Archive"ที่มีไบนารีของ Windows และ Mac สำหรับ R เวอร์ชันเก่ามาก (> 5 ปี) ตอนนี้คุณสามารถติดตั้งได้โดยตรงจากเซิร์ฟเวอร์นี้โดยใช้install.packages()ไฟล์. ดูR FAQ 7.44 ใหม่สำหรับรายละเอียดบางประการ


4
ขอบคุณฉันเดาว่าเป็นวิธีที่ถูกต้อง เสียดายตอนนี้ฉันได้รับ: Warning message: package ‘http://cran.r-project.org/src/contrib/Archive/ggplot2/ggplot2_0.9.1.tar.gz’ is not available (for R version 2.15.2)
hirolau

3
มีปัญหาคล้ายกันกับ Rcpp อาจเป็นเพราะการพึ่งพาเวอร์ชัน R ของแพ็คเกจ (DEPENDS: <version>) หรืออาจเป็นไปได้ว่าเซสชัน R ที่กำลังทำงานอยู่จะไม่อนุญาตให้คุณทำการอัปเดต สิ่งที่พบได้ผลสำหรับฉันคือดำเนินการอัปเดตในลักษณะที่ Mark Butler (ด้านล่าง) แนะนำ (R CMD INSTALL your_version.tar.gz) นี่คือสำหรับ R 2.15.3 ในกรณีของฉัน
Robert Casey

@ Antoine คุณอยู่บน Windows หรือไม่? และถ้าเป็นเช่นนั้นคุณได้ติดตั้ง Rtools หรือไม่?
โทมัส

@ โทมัสขอบคุณสำหรับการตอบกลับ ใช่ฉันใช้ Windows ที่มี Rtools "pseudo-installed" ดูหัวข้อนี้
Antoine

@ โทมัสฉันจะพยายามเรียกใช้สคริปต์ของฉันบน Amazon EC2 เพื่อหลีกเลี่ยงปัญหาภายในเครื่องที่ชัดเจน (เส้นทางไลบรารีเวอร์ชันของ R เทียบกับเวอร์ชันของแพ็คเกจปัญหาการรวบรวม ฯลฯ )
Antoine

88

remotesแพคเกจมีinstall_versionฟังก์ชั่นที่สามารถทำเช่นนี้ได้โดยตรง

require(remotes)
install_version("ggplot2", version = "0.9.1", repos = "http://cran.us.r-project.org")

ก่อนหน้านี้คำตอบนี้ชี้ไปที่devtoolsแพ็กเกจซึ่งส่งออกinstall_versionฟังก์ชันอีกครั้ง ขอบคุณ @MichaelChirico ที่ชี้ให้เห็นว่าremotesแพ็คเกจนี้เป็นที่ต้องการ


คุณสามารถเก็บแพ็กเกจเดียวกันไว้หลายเวอร์ชันโดยไม่ต้องinstall_versionทุกครั้งที่ต้องการโหลดเวอร์ชันใดเวอร์ชันหนึ่งได้หรือไม่? พูดlibrary(ggplot2-0.9.1)
PatrickT

1
@PatrickT คุณสามารถทำได้โดยใช้ห้องสมุดท้องถิ่น ตัวอย่างinstall_version('ggplot2', version = 0.9.1, lib = 'path_to_library_with_ggplot_0.9.1')และlibrary(ggplot2, lib.loc = 'path_to_library_with_ggplot_0.9.1')
เงา

1
คุณยังสามารถใช้. libPaths ("/ dir_for_custom_library_versions") ก่อนเรียกใช้ install_version
tjjjohnson

1
ปัจจุบันฉันคิดว่าremotes::install_versionเป็นที่นิยมเนื่องจากremotesเป็นแพ็คเกจที่มีน้ำหนักเบากว่ามากdevtools( devtools::install_versionเป็นเพียงการส่งออกใหม่remotes::install_version)
MichaelChirico

5

การใช้install.packagesตามที่อธิบายไว้ในคำตอบอื่นไม่ได้ผลสำหรับฉัน

ทางเลือกที่ดีที่สุดของผมพบคือการใช้ฟังก์ชั่นจากแพคเกจinstall_urldevtools

ความเป็นไปได้อีกอย่างที่ฉันไม่ได้สำรวจเพิ่มเติม:

  1. ดาวน์โหลดซอร์สไฟล์. tar.gz ที่เก่ากว่าจากไฟล์เก็บถาวรของแพ็กเกจ
  2. ทำตามขั้นตอนที่ระบุไว้ในhttp://rtm.wustl.edu/writings/htrtargz.pdfเพื่อติดตั้งในเครื่อง

สิ่งนี้ไม่ได้ผลสำหรับฉันโปรดทำตามคำถามของฉันstackoverflow.com/q/22673474/684229สำหรับรายละเอียด
TMS

+1 R CMD INSTALLคำสั่งใช้งานได้บน Ubuntu เช่นกัน ขอบคุณ !!
พรรณี

5

คุณสามารถดาวน์โหลดเวอร์ชันที่เหมาะสมของคุณจากลิงค์ด้านล่างเป็นไฟล์ zip

http://cran.r-project.org/src/contrib/Archive/ggplot2/

ใน R Studio: เครื่องมือ >> ติดตั้งแพ็คเกจ >> ติดตั้งจาก: (เลือกแบบเลื่อนลง)

ไฟล์เก็บถาวรแพ็คเกจ (.zip, .tar.gz)

เลือกไฟล์ที่ดาวน์โหลดมาใหม่และติดตั้งแพคเกจ


4

พบทางออกที่ดีซึ่งได้ผลสำหรับฉัน (รายละเอียดอยู่ที่ลิงค์ )

คำสั่งในไลบรารี "repmis":

# Install old versions of the e1071 and gtools packages.

# Create vectors of the package names and versions to install
# Note the names and version numbers must be in the same order
Names <- c("e1071", "gtools")
Vers <- c("1.6", "2.6.1")

# Install old package versions into the default library
InstallOldPackages(pkgs = Names, versions = Vers)

1

install.packagesวิธีบริสุทธิ์

ดูหัวข้อนี้บน R-devel รายการทางไปรษณีย์ เพื่อตอบกลับเคิร์ตวีลเลอร์เคิร์ตฮอร์นิกเปิดเผยคุณลักษณะที่ไม่มีเอกสารของเว็บไซต์ CRAN เพื่อระบุเวอร์ชันเฉพาะของแพ็กเกจ

วิธีนี้จะใช้ได้ตราบเท่าที่คุณติดตั้งการอ้างอิงที่จำเป็นทั้งหมดแล้ว:

package = "https://cran.r-project.org/package=svglite&version=1.2.1"
utils::install.packages(pkgs = package, repos = NULL)

สังเกตโครงสร้าง URL ด้านบน สิ่งนี้กล่าวถึงปัญหาที่ CRAN มีโครงสร้าง URL สำหรับเวอร์ชันล่าสุดที่แตกต่างจากเวอร์ชันที่เก็บถาวร:

# Latest version (not available at Archive/svglite)
https://cran.r-project.org/src/contrib/svglite_1.2.1.tar.gz
# Archived version
https://cran.r-project.org/src/contrib/Archive/svglite/svglite_1.2.0.tar.gz

remotes::install_version วิธี

อีกตัวเลือกหนึ่งคือการใช้ฟังก์ชั่นremotes::install_version แต่คุณจะต้องติดตั้งแพคเกจremotes


0

มีversionsแพ็คเกจที่ช่วยลดความซับซ้อนของงานนี้อย่างมากสำหรับเวอร์ชันแพ็คเกจที่ออกตั้งแต่ 2014-09-17 ใช้สแนปชอตของเซิร์ฟเวอร์ MRAN ที่ Revolution Analytics เพื่อ:

  • แสดงวันที่วางจำหน่ายและความพร้อมใช้งาน MRAN ของแพ็คเกจ CRAN ( available.versions)

  • ติดตั้งเวอร์ชันที่ระบุของแพ็คเกจอย่างน้อยหนึ่งแพ็กเกจ ( install.versions) หรือ

  • ติดตั้งเวอร์ชันแพ็กเกจที่มีให้ในวันที่ระบุ ( install.dates) ทำการติดตั้งจากเซิร์ฟเวอร์ MRAN ผ่านinstall.packagesฟังก์ชันมาตรฐานดังนั้นจึงสามารถติดตั้งเวอร์ชันไบนารีที่มีอยู่แทนที่จะต้องคอมไพล์จากซอร์สและสามารถรวมการอ้างอิงแพ็กเกจ ณ วันที่ระบุได้

แน่นอนว่าอาจมีปัญหาความเข้ากันได้กับการรวมกันของเวอร์ชันแพ็กเกจและเวอร์ชัน R สำหรับการเรียกใช้ R เวอร์ชันต่างๆโปรดดูตัวอย่างหน้านี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.