Чи є якийсь простий спосіб скомпілювати мій 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 - інтерпретована мова. Це неможливо.