Esiste un modo semplice per compilare il mio R
script in un .exe
file autonomo proprio come fa Matlab?
Esiste un modo semplice per compilare il mio R
script in un .exe
file autonomo proprio come fa Matlab?
Risposte:
È un dato di fatto che esiste un modo per ottenere una soluzione che soddisfi le vostre esigenze. Dai un'occhiata all'articolo sulla distribuzione di app desktop con R su R-Blogger. Come descritto in dettaglio nell'articolo, finirai per utilizzare alcune cose in più di un singolo file exe.
Inoltre vorrei attirare la tua attenzione su RGtk2 con l'uso di RGtk2 potresti provare a sviluppare la tua interfaccia in R. Se arriva il momento giusto, confido che potresti impacchettare il tuo codice R insieme a una versione portatile di R e dipendenze in un programma di installazione e make e app da quello, ciò creerebbe l'illusione di un singolo file exe.
Nella tua domanda hai chiesto se è facile sviluppare un file eseguibile autonomo che interpreti il codice R. Non direi che è facile. Se hai un forte desiderio di eseguire un codice R da un'applicazione, potresti farlo in modo più semplice usando RCaller per Java o R.NET .
In risposta al tuo commento:
In realtà vorrei distribuirlo ma mantenendo segreti gli script e l'algoritmo, c'è un modo per crittografarlo o un altro modo per raggiungere questo scopo?
Puoi (più o meno) farlo salvando le funzioni usando save()
. Ad esempio, ecco una funzione f()
che vuoi mantenere segreta:
f <- function(x, y) {
return(x + y)
}
Salvalo ovunque:
save(f, file = 'C:\\Users\\Joyce\\Documents\\R\\Secret.rda')
E quando vuoi usare la funzione:
load("C:\\Users\\Joyce\\Documents\\R\\Secret.rda")
Vorrei salvare tutte le mie funzioni in file separati, metterle in una cartella e avere un semplice vecchio script .R che le carica tutte dentro ed esegue qualsiasi cosa. Comprimi tutto e distribuiscilo a chiunque. Forse anche compilarlo in un pacchetto. In effetti l'intera cosa sarebbe di sola lettura allora.
Questa soluzione però non è eccezionale. Puoi ancora vedere la funzione in R digitando il nome della funzione in modo che non sia nascosta in quel senso. Ma se apri i file .rda i loro contenuti sono tutti confusi. Tutto dipende davvero dall'esperienza dei destinatari del codice con R.
f
.
Una forma di codice crittografato è implementata nella petals
funzione nel pacchetto TeachingDemos.
Si noti che sarebbero necessarie solo abilità di programmazione di livello intermedio per trovare il codice nascosto, tuttavia ci vuole uno sforzo deliberato e l'utente non sarebbe in grado di affermare di aver visto il codice per sbaglio. Avresti quindi bisogno di un qualche tipo di contratto di licenza in atto per applicare eventuali accordi di non visualizzazione.
petals
funzione non nasconde il codice, è un esempio di avere nascosto un pezzo chiave di codice (puoi leggere il pezzo chiave?). Sono necessari altri strumenti per eseguire la crittografia (sbiancamento). Un approccio più semplice è discusso su: stat.ethz.ch/pipermail/r-devel/2011-October/062236.html . Anche la compilazione dei byte può aiutare, ma hai davvero bisogno di un qualche tipo di contratto di licenza.
Bene, avrai bisogno di R installato sulla macchina di distribuzione. Per quanto riguarda la creazione di un eseguibile, non sono sicuro che sia possibile. Ma puoi creare un altro programma che invoca il tuo script R. R è un linguaggio interpretato. Non è possibile.