Есть ли простой способ скомпилировать мой R
скрипт в отдельный .exe
файл, как это делает Matlab?
Есть ли простой способ скомпилировать мой R
скрипт в отдельный .exe
файл, как это делает Matlab?
Ответы:
На самом деле есть способ найти решение, которое отвечало бы вашим требованиям. Прочтите статью «Развертывание настольных приложений с R на R-Bloggers». Как подробно описано в статье, вы в конечном итоге будете использовать еще несколько вещей, чем один exe-файл.
Также я хотел бы обратить ваше внимание на RGtk2 с использованием RGtk2, вы можете попытаться разработать свой собственный интерфейс на R. Если дело дойдет до крайности, я надеюсь, что вы могли бы упаковать свой код R вместе с портативной версией R и зависимостей в один установщик и make и app из него, что создало бы иллюзию единственного exe-файла.
В своем вопросе вы спросили, легко ли разработать автономный исполняемый файл, интерпретирующий код R. Я бы не сказал, что это просто. Если у вас есть сильное желание запустить код R из приложения, вы можете сделать это более простым способом, используя RCaller для Java или R.NET .
В ответ на ваш комментарий:
На самом деле я хотел бы распространять его, но сохраняя в секрете скрипты и алгоритм, есть ли способ зашифровать тот или иной способ достижения этой цели?
Вы можете (вроде) сделать это, сохранив функции с помощью 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.
f
.
Одна из форм зашифрованного кода реализована в petals
функции пакета TeachingDemos.
Обратите внимание, что для поиска скрытого кода потребуются только навыки программирования среднего уровня, однако это требует целенаправленных усилий, и пользователь не сможет заявить, что видел код случайно. Затем вам потребуется какое-то лицензионное соглашение, чтобы обеспечить соблюдение любых соглашений о запрете просмотра.
petals
функция не скрывает код, это один из примеров скрытия ключевого фрагмента кода (вы можете прочитать ключевой фрагмент?). Для шифрования (отбеливания) необходимы другие инструменты. Более простой подход обсуждается по адресу stat.ethz.ch/pipermail/r-devel/2011-October/062236.html . Байт-компиляция тоже может помочь, но вам действительно нужно какое-то лицензионное соглашение.
Что ж, вам понадобится R, установленный на машине развертывания. Что касается создания исполняемого файла, я не уверен, что это возможно. Но вы можете создать другую программу, которая будет вызывать ваш R-скрипт. R - интерпретируемый язык. Это невозможно.