Czy istnieje prosty sposób na skompilowanie mojego Rskryptu do samodzielnego .exepliku, tak jak robi to Matlab?
Czy istnieje prosty sposób na skompilowanie mojego Rskryptu do samodzielnego .exepliku, tak jak robi to Matlab?
Odpowiedzi:
Właściwie istnieje sposób na osiągnięcie rozwiązania, które spełni Twoje wymagania. Zapoznaj się z artykułem na temat wdrażania aplikacji klasycznych z R na R-Bloggerach. Jak opisano w artykule, w końcu użyjesz kilku rzeczy więcej niż jednego pliku exe.
Chciałbym również zwrócić twoją uwagę na RGtk2, przy użyciu RGtk2 możesz spróbować stworzyć własny interfejs w R. Jeśli przyjdzie Ci do głowy, ufam, że możesz spakować swój kod R razem z przenośną wersją R i zależności w jednym instalatorze i stworzeniu z niego aplikacji, co stworzyłoby iluzję jednego pliku exe.
W swoim pytaniu zapytałeś, czy łatwo jest opracować samodzielny plik wykonywalny interpretujący kod R. Nie powiedziałbym, że to łatwe. Jeśli masz silne pragnienie uruchomienia kodu R z aplikacji, możesz to zrobić w prostszy sposób, używając RCaller for Java lub R.NET .
W odpowiedzi na Twój komentarz:
Właściwie chciałbym go rozpowszechniać, ale zachowując skrypty i algorytm w tajemnicy, czy istnieje sposób na zaszyfrowanie tego lub innego sposobu, aby osiągnąć ten cel?
Możesz (w pewnym sensie) to zrobić, zapisując funkcje za pomocą save(). Na przykład, oto funkcja, f()którą chcesz zachować w tajemnicy:
f <- function(x, y) {
return(x + y)
}
Zapisz to gdziekolwiek:
save(f, file = 'C:\\Users\\Joyce\\Documents\\R\\Secret.rda')
A kiedy chcesz skorzystać z funkcji:
load("C:\\Users\\Joyce\\Documents\\R\\Secret.rda")
Zapisałbym wszystkie moje funkcje w osobnych plikach, umieściłbym je w folderze i miałbym jeden zwykły stary skrypt .R ładujący je wszystkie i wykonujący cokolwiek. Spakuj całość i rozdaj komukolwiek. Może nawet skompiluj go w pakiet. W rzeczywistości całość byłaby tylko do odczytu.
To rozwiązanie nie jest jednak świetne. Nadal możesz zobaczyć funkcję w R, wpisując nazwę funkcji, aby nie była ukryta w tym sensie. Ale jeśli otworzysz pliki .rda, ich zawartość jest zniekształcona. Wszystko zależy tak naprawdę od tego, jak doświadczeni są odbiorcy twojego kodu z R.
f.
Jedną z form posiadania zaszyfrowanego kodu zaimplementowano w petalsfunkcji pakietu TeachingDemos.
Zwróć uwagę, że znalezienie ukrytego kodu wymagałoby jedynie umiejętności programowania na poziomie średnio zaawansowanym, jednak wymaga to celowego wysiłku i użytkownik nie byłby w stanie twierdzić, że widział kod przez przypadek. Będziesz wtedy potrzebować jakiegoś rodzaju umowy licencyjnej, aby wyegzekwować wszelkie umowy o braku podglądu.
petalsfunkcja nie ukrywa kodu, jest to jeden z przykładów ukrywania kluczowego fragmentu kodu (czy potrafisz odczytać klucz?). Do szyfrowania (wybielania) potrzebne są inne narzędzia. Prostsze podejście omówiono pod adresem: stat.ethz.ch/pipermail/r-devel/2011-October/062236.html . Kompilacja bajtów również może pomóc, ale naprawdę potrzebujesz jakiejś umowy licencyjnej.
Cóż, będziesz potrzebować R zainstalowanego na maszynie wdrożeniowej. Jeśli chodzi o tworzenie pliku wykonywalnego, nie jestem pewien, czy jest to możliwe. Ale możesz stworzyć inny program, który wywoła twój skrypt R. R jest językiem interpretowanym. To niemożliwe.