ข้อจำกัดความรับผิดชอบ: ฉันไม่คุ้นเคยกับ R
จาก R: เส้นทางการค้นหา :
พาธการค้นหาไลบรารีจะเริ่มต้นเมื่อเริ่มต้นจากตัวแปรสภาพแวดล้อม R_LIBS (ซึ่งควรเป็นรายการไดเร็กทอรีที่คั่นด้วยโคลอนซึ่งมีการรูทแผนผังไลบรารี R) ตามด้วยตัวแปรสภาพแวดล้อม R_LIBS_USER เฉพาะไดเร็กทอรีที่มีอยู่ในขณะนั้นเท่านั้นที่จะถูกรวมไว้
โดยค่าเริ่มต้น R_LIBS ไม่ได้ตั้งค่า และ R_LIBS_USER ถูกตั้งค่าเป็นไดเรกทอรี 'R/R.version$platform-library/x.y' ของโฮมไดเร็กตอรี่ (หรือ 'Library/R/x.y/library' สำหรับ CRAN macOS builds) สำหรับ R เอ็กซ์.วาย.ซี.
ตัวแปรสภาพแวดล้อมสามารถสร้างได้ด้วยคำสั่ง set VARIABLE_NAME=YOUR_VALUE
แบทช์
ดังนั้นไฟล์แบตช์ของคุณน่าจะเป็นดังนี้:
cd /d "C:\INSERT_PATH_TO_DIRECTORY_CONTAINING_script.R"
set "R_LIBS=C:\Users\username\Documents\R\R-3.5.1\library"
"C:\Program Files\R\R-3.5.1\bin\x64\Rscript.exe" script.R
อย่างไรก็ตาม ด้วยเหตุผลด้านความสามารถในการพกพา (สมมติว่าเพื่อนร่วมงานขอสำเนาสคริปต์ของคุณ ไม่เช่นนั้นคอมพิวเตอร์ของคุณเสีย) ฉันขอแนะนำให้วางสคริปต์ ไลบรารี R และไฟล์แบตช์ไว้ในไดเร็กทอรีเดียว สมมติว่า C:\Users\username\Documents\R
ไฟล์แบตช์ C:\Users\username\Documents\R\script.bat
กลายเป็น:
cd /d "%~dp0"
set "R_LIBS=%~dp0R-3.5.1\library"
"%PROGRAMFILES%\R\R-3.5.1\bin\x64\Rscript.exe" "%~dpn0.R"
%PROGRAMFILES%
ตัวแปรสภาพแวดล้อมขยายไปยังเส้นทางแบบเต็มของโฟลเดอร์ program files
, %~dp0
พารามิเตอร์ ขยายไปยังเส้นทางแบบเต็มของ ไดเร็กทอรีที่เก็บแบตช์ไฟล์ของคุณ และ %~dpn0
เป็นพาธแบบเต็มของแบตช์ไฟล์ที่ไม่มีนามสกุล
โปรดสังเกตว่า %~dp0R-3.5.1
ไม่ใช่ตัวพิมพ์ผิด เนื่องจาก %~dp0
มีแบ็กสแลชต่อท้าย
วิธีนี้ทำให้คุณสามารถคัดลอก C:\Users\username\Documents\R
ไปยัง D:\Users\SOMEOTHERNAME\Documents\R
และสคริปต์จะยังคงทำงานอยู่
หากคุณสร้างสคริปต์เวอร์ชันอื่น เพียงคัดลอกไฟล์แบตช์เพื่อให้มีชื่อไฟล์เหมือนกับสคริปต์ของคุณ แต่มีนามสกุล .bat
แทนที่จะเป็น .R
และควรเรียกสคริปต์ใหม่ ซึ่งพิสูจน์แล้วว่ามีประโยชน์มากเมื่อแก้ไขจุดบกพร่องและแจกจ่ายสคริปต์
หรืออีกทางหนึ่ง หากคุณต้องการติดตั้งไลบรารีแยกกัน คุณอาจต้องการใช้ %HOMEDRIVE%%HOMEPATH%
ซึ่งจะขยายเป็น C:\Users\username
การแยกเส้นทางโฟลเดอร์ Documents
ที่เหมาะสม รวมถึงเส้นทางการติดตั้ง R
สามารถทำได้ แต่ต้องอ่านรีจิสทรีจึงจะซับซ้อนกว่าเล็กน้อย
person
Jack White
schedule
05.11.2018
.libPaths(paste("C:/Users/",Sys.getenv("USERNAME"),"/Documents/R/R-3.5.1/library",sep=""))
ที่จุดเริ่มต้นของสคริปต์ของคุณล่ะ? - person Maylo   schedule 05.11.2018batch-file
... - person Aacini   schedule 05.11.2018