2012-12-31 68 views
54

是否有任何简单的方法可以将我的R脚本编译为独立的.exe文件,就像matlab所做的一样?将R脚本编译为独立的.exe文件?

+8

非常简短的回答:不会。 –

+1

其实我想分发它,但保留脚本和算法的秘密,有没有一种方法来加密或以任何其他方式来实现此目的? – Joyce

+2

很多讨论http://stackoverflow.com/questions/4707276/encrypting-r-script-under-ms-windows –

回答

4

那么你将需要安装在部署机器上的R.至于制作一个可执行文件,我不确定这是可能的。但是你可以创建另一个调用你的R脚本的程序。 R是一种解释型语言。这不可能。

+1

我们是否有任何有关任何R编译器的消息?我开始使用python,并且有简单的方法来生成exe文件(例如py2exe和cx_freeze)。 R有没有机会在R中看到类似的东西? – Tony

8

在回答您的评论:

其实我想distribe,但保持脚本和 算法的秘密,有没有一种方法来加密或任何其他方式 达到这一目的?

你可以(有点)通过使用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的经验。

+0

谢谢您的建议,可以是防止他人直接看到密码的一种方法,再次感谢。 – Joyce

+1

如何将整个工作区保存为图像? –

4

加密代码的一种形式在TeachingDemos包中的petals函数中实现。

请注意,它只需要中等水平的编程技巧来查找隐藏的代码,但它确实需要刻意的努力,并且用户将无法声称无意中看到了代码。然后,您需要一些类型的许可协议来执行任何不允许窥视协议。

+0

谢谢格雷格,我只是看看你提到的功能,但不知道如何使用它来隐藏代码,你会详细说明更多吗?非常感谢。 – Joyce

+0

@Joyce,'petals'函数并不隐藏代码,它是隐藏一段关键代码的一个例子(你能读关键代码吗?)。其他工具需要进行加密(漂白)。有关更简单的方法,请参阅:https://stat.ethz.ch/pipermail/r-devel/2011-October/062236.html。字节编译也可能有帮助,但您确实需要某种类型的许可协议。 –

21

事实上,有一种方法可以实现满足您的要求的解决方案。看看关于在R-Bloggers上部署Desktop Apps with R的文章。正如文章中详细描述的那样,您将最终使用比单个exe文件更多的东西。

另外我想提醒您注意RGtk2使用RGtk2您可以尝试在R中开发自己的接口。如果推动推动,我相信您可以将R代码与便携式版本的R和依赖关系放入一个安装程序,并从中创建和创建应用程序,这将创建单个exe文件的错觉。

在你的问题中,你问是否容易开发解释R代码的独立可执行文件。我不会说这很容易。如果您强烈希望从应用程序运行R代码,则可以使用RCaller(适用于Java)或R.NET(更简单)执行此操作。

+1

关于用R压缩桌面应用程序的链接文章非常好(使用便携式应用程序和闪亮!),Thx! –

+2

@RYoda我很高兴看到这一点。对这个问题有兴趣。如果你想坚持使用Shiny,[本文](http://blog.analytixware.com/2014/03/packaging-your-shiny-app-as-windows.html)提供了关于将Shiny App打包为一个Windows桌面应用程序。 – Konrad

+0

也可以在整个javax.script API中使用RCaller脚本引擎,请参阅http://mhsatman.com/rcaller-3-0 – jbytecode