คอมไพล์สคริปต์ R เป็นไฟล์. exe แบบสแตนด์อโลน?


87

มีวิธีง่ายๆในการรวบรวมRสคริปต์ของฉันเป็น.exeไฟล์แบบสแตนด์อโลนเช่นเดียวกับ matlab หรือไม่?


15
คำตอบสั้น ๆ : ไม่ไม่เคยไป
Dirk Eddelbuettel

2
ที่จริงฉันต้องการแจกจ่าย แต่เก็บสคริปต์และอัลกอริทึมไว้เป็นความลับมีวิธีเข้ารหัสหรือวิธีอื่นเพื่อให้บรรลุวัตถุประสงค์นี้หรือไม่
Joyce

2
พูดคุยมากมายที่stackoverflow.com/questions/4707276/…
Ben Bolker

1
@Joyce เพื่อซ่อนโค้ดโซลูชันมาตรฐานคือการแจกจ่ายแอปพลิเคชันบนเซิร์ฟเวอร์ ดังนั้นผู้ใช้ของคุณจะเชื่อมต่อผ่านเซิร์ฟเวอร์ ไม่เพียง แต่คุณจะสามารถซ่อนรหัสได้ แต่ผู้ใช้ของคุณยังสามารถเข้าถึงเวอร์ชันที่อัปเดตล่าสุดได้เสมอ อย่างไรก็ตามคุณจะต้องสร้างโครงสร้างพื้นฐานของเซิร์ฟเวอร์ (ควรใช้ผู้ให้บริการคลาวด์ R)
Tripartio

1
การสร้างแพ็คเกจจะช่วยในการแจกจ่ายรหัสทั่วไป ฉันก็มองหาการสร้าง exe สำหรับงาน / ฟังก์ชั่นทางโลกเช่นกัน calcs ที่เกิดขึ้นซ้ำแล้วซ้ำเล่า และเพื่อแบ่งปัน exe กับบางคนที่ไม่ใช้การเข้ารหัส / ชอบแอพที่ใช้ UI น่าเสียดายที่ยังคงมองหาวิธี
bonCodigo

คำตอบ:


28

ตามความเป็นจริงมีวิธีการแก้ปัญหาที่ตรงตามความต้องการของคุณ ดูบทความเกี่ยวกับการปรับใช้แอปเดสก์ท็อปด้วย Rบน R-Bloggers ตามรายละเอียดในบทความคุณจะต้องใช้สิ่งต่างๆมากกว่าไฟล์ exe ไฟล์เดียว

นอกจากนี้ฉันต้องการดึงดูดความสนใจของคุณไปยังRGtk2ด้วยการใช้RGtk2คุณสามารถลองพัฒนาอินเทอร์เฟซของคุณเองใน R ได้หากมีการผลักดันเข้ามาฉันเชื่อว่าคุณสามารถบรรจุรหัส R ของคุณร่วมกับ R รุ่นพกพาและ การพึ่งพาในตัวติดตั้งเดียวและสร้างและแอพจากนั้นจะสร้างภาพลวงตาของไฟล์ exe เดียว

ในคำถามของคุณที่คุณถามไม่ว่าจะเป็นเรื่องง่ายที่จะพัฒนารหัส R แบบสแตนด์อโลนแฟ้มที่ปฏิบัติการตีความ ฉันคงไม่บอกว่ามันง่าย หากคุณมีความปรารถนาดีที่จะเรียกใช้รหัส R จากโปรแกรมที่คุณสามารถทำมันได้ในลักษณะที่เรียบง่ายใช้RCallerสำหรับ Java หรือR.NET


1
บทความที่เชื่อมโยงเกี่ยวกับการใช้แอพเดสก์ท็อปกับ R นั้นดีมาก (ใช้แอพพกพาและมันวาว!) Thx!
R Yoda

2
@RYoda ฉันดีใจที่ได้อ่าน มีความสนใจในเรื่องนี้ หากคุณต้องการใช้ Shiny บทความนี้ให้คำแนะนำที่น่าสนใจเกี่ยวกับการบรรจุ Shiny App เป็นแอป Windows Desktop
Konrad

นอกจากนี้ยังสามารถใช้ RCaller scripting engine ตลอดทั้ง javax.script API ดูที่mhsatman.com/rcaller-3-0
jbytecode

11

ในการตอบกลับความคิดเห็นของคุณ:

อันที่จริงฉันต้องการแจกจ่าย แต่เก็บสคริปต์และอัลกอริทึมไว้เป็นความลับมีวิธีเข้ารหัสหรือวิธีอื่นเพื่อให้บรรลุวัตถุประสงค์นี้หรือไม่?

คุณสามารถ (เรียงลำดับ) ได้โดยบันทึกฟังก์ชันโดยใช้save(). ตัวอย่างเช่นนี่คือฟังก์ชันf()คุณต้องการเก็บเป็นความลับมีดังนี้

f <- function(x, y) {
  return(x + y)
}

บันทึกไว้ทุกที่:

save(f, file = 'C:\\Users\\Joyce\\Documents\\R\\Secret.rda')

และเมื่อคุณต้องการใช้ฟังก์ชัน:

load("C:\\Users\\Joyce\\Documents\\R\\Secret.rda")

ฉันจะบันทึกฟังก์ชั่นทั้งหมดของฉันในไฟล์แยกจากกันใส่ไว้ในโฟลเดอร์และมีสคริปต์. R เก่า ๆ อันเดียวที่โหลดทั้งหมดและดำเนินการอะไรก็ได้ รูดซิปขึ้นและแจกจ่ายให้ใครก็ได้ บางทีอาจจะรวบรวมเป็นแพคเกจ สิ่งทั้งหมดจะเป็นแบบอ่านอย่างเดียวได้อย่างมีประสิทธิภาพ

วิธีการแก้ปัญหานี้ไม่ค่อยดีนัก คุณยังคงเห็นฟังก์ชันใน R ได้โดยพิมพ์ชื่อของฟังก์ชันเพื่อไม่ให้ถูกซ่อนไว้ในความหมายนั้น แต่ถ้าคุณเปิดไฟล์. rda เนื้อหาจะอ่านไม่ออกทั้งหมด ทุกอย่างขึ้นอยู่กับประสบการณ์ที่ผู้รับรหัสของคุณใช้กับ R


ขอบคุณสำหรับคำแนะนำอาจเป็นวิธีหนึ่งในการป้องกันไม่ให้ผู้อื่นเห็นรหัสโดยตรงขอบคุณอีกครั้ง
Joyce

3
fแต่มันก็จะปรากฏขึ้นเมื่อคุณพิมพ์
MAPK

4

รูปแบบหนึ่งของการมีรหัสเข้ารหัสถูกนำไปใช้ในpetalsฟังก์ชันในแพ็คเกจ TeachingDemos

โปรดทราบว่าจะต้องใช้ทักษะการเขียนโปรแกรมระดับกลางเท่านั้นในการค้นหารหัสที่ซ่อนอยู่อย่างไรก็ตามต้องใช้ความพยายามอย่างรอบคอบและผู้ใช้จะไม่สามารถอ้างสิทธิ์ได้หากเห็นรหัสโดยบังเอิญ จากนั้นคุณจะต้องมีข้อตกลงใบอนุญาตบางประเภทเพื่อบังคับใช้ข้อตกลงใด ๆ ที่ไม่มีการแอบดู


ขอบคุณ Greg ฉันเพิ่งตรวจสอบฟังก์ชั่นที่คุณกล่าวถึง แต่ไม่สามารถหาวิธีใช้เพื่อซ่อนรหัสได้คุณช่วยอธิบายเพิ่มเติมได้ไหมขอบคุณมาก
Joyce

@Joyce petalsฟังก์ชั่นไม่ซ่อนรหัสเป็นตัวอย่างหนึ่งของการซ่อนรหัสสำคัญไว้ (คุณสามารถอ่านส่วนสำคัญได้หรือไม่) ต้องใช้เครื่องมืออื่น ๆ ในการเข้ารหัส (การฟอกสี) วิธีง่ายที่จะกล่าวถึงที่: stat.ethz.ch/pipermail/r-devel/2011-October/062236.html การคอมไพล์ไบต์อาจช่วยได้เช่นกัน แต่คุณต้องมีข้อตกลงสิทธิ์การใช้งานบางประเภท
Greg Snow

3

คุณจะต้องติดตั้ง R บนเครื่องปรับใช้ สำหรับการสร้างไฟล์ปฏิบัติการฉันไม่แน่ใจว่าเป็นไปได้ แต่คุณสามารถสร้างโปรแกรมอื่นที่เรียกใช้สคริปต์ R ของคุณได้ R เป็นภาษาที่ตีความได้ มันเป็นไปไม่ได้.


3
เรามีข่าวสารเกี่ยวกับคอมไพเลอร์ R หรือไม่? ฉันเริ่มใช้ python และมีวิธีง่ายๆในการสร้างไฟล์ exe (เช่น py2exe และ cx_freeze) มีโอกาสได้เห็นอะไรแบบนี้ใน R เร็ว ๆ นี้หรือไม่?
Tony
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.