94

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

4

6 回答 6

32

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

另外,我想通过使用RGtk2来提请您注意RGtk2 ,您可以尝试在 R 中开发自己的界面。如果迫在眉睫,我相信您可以将您的 R 代码与 R 的可移植版本打包在一起,并且依赖于一个安装程序并从中生成和应用程序,这会产生单个 exe 文件的错觉。

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

于 2015-01-29T11:51:35.033 回答
12

回应您的评论:

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

您可以(在某种程度上)通过使用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 的体验程度。

于 2012-12-31T09:52:03.873 回答
5

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

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

于 2012-12-31T19:03:31.100 回答
4

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

于 2012-12-31T01:34:29.143 回答
3

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

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

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

于 2021-10-10T16:19:04.967 回答
1

如果 Python 可以做到,我不明白为什么不能编译 R。Python 在技术上是解释性的,但它们是编译器,将解释器与代码捆绑在一起并编译成 exe。

于 2021-09-25T08:31:12.640 回答