是否将R脚本编译为独立的.exe文件?

是否将R脚本编译为独立的.exe文件?,r,R,有什么简单的方法可以像matlab那样将我的R脚本编译成独立的.exe文件吗?您需要在部署计算机上安装R。至于制作一个可执行文件,我不确定这是否可行。但是您可以创建另一个程序来调用R脚本。R是一种解释语言。这是不可能的。回应您的评论: 实际上,我想发行它,但保留脚本和 算法秘密,有没有加密的方法,或者其他的加密方法 达到这个目的 您可以通过使用save()保存函数(某种程度上)来实现这一点。例如,这里有一个要保密的函数f(): f <- function(x, y) { return(

有什么简单的方法可以像matlab那样将我的
R
脚本编译成独立的
.exe
文件吗?

您需要在部署计算机上安装R。至于制作一个可执行文件,我不确定这是否可行。但是您可以创建另一个程序来调用R脚本。R是一种解释语言。这是不可能的。

回应您的评论:


实际上,我想发行它,但保留脚本和 算法秘密,有没有加密的方法,或者其他的加密方法 达到这个目的

您可以通过使用
save()
保存函数(某种程度上)来实现这一点。例如,这里有一个要保密的函数
f()

f <- function(x, y) {
  return(x + y)
}
当您想使用该功能时:

load("C:\\Users\\Joyce\\Documents\\R\\Secret.rda")
我会将所有函数保存在单独的文件中,将它们放在一个文件夹中,让一个普通的.R脚本将它们全部加载并执行任何操作。把整个东西都拉上拉链,分发给任何人。甚至可以把它编译成一个包。实际上,到那时,整个内容将是只读的


但这个解决方案并不是很好。您仍然可以通过键入函数名在R中看到函数,因此在这种意义上它不是隐藏的。但是如果打开.rda文件,它们的内容都是乱码。这完全取决于代码接收者对R的经验。

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


请注意,查找隐藏代码只需要中级编程技能,但这确实需要深思熟虑,用户不能声称无意中看到了代码。然后,您需要某种类型的许可协议来强制执行任何禁止偷窥协议。

事实上,有一种方法可以实现满足您需求的解决方案。看看关于在R-Bloggers上部署的文章。正如本文所详细介绍的,您最终将使用比单个exe文件更多的东西

另外,我想提请你们注意的是,使用R,你们可以尝试在R中开发自己的界面。若推到了紧要关头,我相信你们可以将你们的R代码和R的可移植版本和依赖项打包到一个安装程序中,并由此制作和应用程序,这将产生一个单一exe文件的幻觉


在你的问题中,你问开发一个解释R代码的独立可执行文件是否容易。我不会说这很容易。如果您强烈希望从应用程序运行R代码,您可以使用Java或。

非常简短的回答:没有。从来没有。实际上,我想分发它,但要对脚本和算法保密,有没有加密的方法或任何其他方法来达到此目的?在@Joyce进行了大量讨论,要隐藏代码,标准解决方案是在服务器上分发应用程序。所以,您的用户将通过服务器进行连接。您不仅可以隐藏代码,而且您的用户还可以始终访问最新版本。但是,您需要建立服务器基础设施(最好使用R云提供商)。创建一个包将有助于分发通用代码。我也一直在考虑为普通任务/函数创建一个exe,一次又一次重复的计算。以及与不使用编码/更喜欢基于UI的应用程序的人共享exe。不幸的是,我仍在寻找方法。谢谢你,格雷格,我只是研究了你提到的函数,但不知道如何使用它来隐藏代码,请你详细说明一下好吗?谢谢。@Joyce,
petals
函数并没有隐藏代码,这是隐藏关键代码的一个例子(你能读懂关键代码吗?)。加密(漂白)还需要其他工具。一种更简单的方法在:。字节编译也可能有帮助,但您确实需要某种类型的许可协议。感谢您的建议,这可能是防止其他人直接看到代码的一种方法,再次感谢。但一旦您键入
f
,它就会出现。我们有关于任何R编译器的消息吗?我开始使用python,有一些简单的方法可以生成exe文件(例如py2exe和cx_freeze)。有没有可能很快在R中看到类似的东西?关于使用R开发桌面应用程序的链接文章非常好(使用便携式应用程序和闪亮!),Thx@RYoda我很高兴读到这一点。人们对这个问题很感兴趣。如果您想坚持使用Shiny,请提供有关将Shiny应用程序打包为Windows桌面应用程序的有趣建议。还可以在javax.script API中使用RCaller脚本引擎,请参阅
load("C:\\Users\\Joyce\\Documents\\R\\Secret.rda")