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

Joy*_*yce 71 r

有没有简单的方法将我的R脚本编译成独立.exe文件,就像matlab一样?

Kon*_*rad 26

事实上,有一种方法可以实现满足您要求的解决方案.查看有关在R-Blogger上使用R部署桌面应用程序的文章.正如文章中详述的那样,最终将使用比单个exe文件更多的东西.

此外,我想提请你注意RGtk2与使用的RGtk2你可以尝试开发R.自己的界面如果推来推去,我相信你可以用R的便携版本一起收拾你的R代码里面和依赖于一个安装程序以及make和app,这会产生单个exe文件的错觉.

在您的问题中,您询问是否很容易开发一个解释R代码的独立可执行文件.我不会说这很容易.如果您非常希望从应用程序运行R代码,则可以使用RCaller for Java或R.NET以更简单的方式执行此操作.

  • @RYoda我很高兴看到这个.对此主题感兴趣.如果您想坚持使用Shiny,[本文](http://blog.analytixware.com/2014/03/packaging-your-shiny-app-as-windows.html)提供有关打造Shiny App的有趣建议Windows桌面应用程序. (2认同)

Mad*_*one 11

回应你的评论:

实际上我想分发它,但保持脚本和算法的秘密,有没有办法加密或以任何其他方式实现这一目的?

您可以(通过使用保存函数来执行此操作)save().例如,这是一个f()你想保密的功能:

f <- function(x, y) {
  return(x + y)
}
Run Code Online (Sandbox Code Playgroud)

保存在任何地方:

save(f, file = 'C:\\Users\\Joyce\\Documents\\R\\Secret.rda')
Run Code Online (Sandbox Code Playgroud)

当你想使用这个功能时:

load("C:\\Users\\Joyce\\Documents\\R\\Secret.rda")
Run Code Online (Sandbox Code Playgroud)

我将所有函数保存在单独的文件中,将它们放在一个文件夹中,并有一个普通的.R脚本将它们全部加载并执行任何操作.拉上整个东西并将其分发给任何人.甚至可以将它编译成一个包.实际上,整个事情将是只读的.

这个解决方案并不是那么好.您仍然可以通过键入函数的名称来查看R中的函数,因此在这种意义上它不会被隐藏.但是如果你打开.rda文件,它们的内容都会出现乱码.这完全取决于您的代码的收件人与R的经验.

  • 但是,一旦您输入`f`,它将出现。 (2认同)

Jan*_*Jan 8

我对这个问题做了一些研究,并在过去几年中实施了一些解决方案。

  1. 一种选择是将您的应用程序与便携式 R 一起包装到像 Electron 这样的容器应用程序中。电子快速启动项目就尝试了这一点。
  2. RInno提供了将您的应用程序和 R 可移植程序捆绑到安装程序应用程序中的功能。每个用户在其系统上运行一次安装程序,这将安装您的应用程序、软件包和代码。但最终用户可能看不到与其他应用程序的区别。他们在开始菜单中获得一个链接,仅此而已。我成功地做到了。但它并不能开箱即用。我必须在几个地方手动调整输出。
  3. 第二个容器解决方案与 docker 一起使用。这就是ShinyProxy所做的。另请参阅此博客
  4. shinyShortcut(我引用)“将生成一个可执行文件,直接在用户的默认浏览器中运行shiny应用程序”。

需要注意的是:我还没有测试过其中的大多数。通过查看解决方案,我经常感觉到这些解决方案可能会使发布变得有些复杂,因为总是涉及手动步骤。


Gre*_*now 5

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

请注意,只需要中级编程技能即可找到隐藏的代码,但这确实需要刻意的努力,并且用户不能声称无意中看到了该代码。然后,您需要某种类型的许可协议来执行任何禁止偷看协议。


tur*_*rnt 4

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

  • 我们有关于 R 编译器的任何消息吗?我开始使用 python,有一些简单的方法可以生成 exe 文件(例如 py2exe 和 cx_freeze)。很快有机会在 R 中看到类似的东西吗? (6认同)