R :快速启动的图形用户界面(闪亮的替代品?)

R : GUIs fast to launch (alternatives to shiny ?)

我正在尝试为我的 CRAN 包制作一些 GUI

  1. 一些 f 函数可以在本地启动一个弹出窗口,其中包含一些呈现一些输出的参数,例如在本地启动一个简单的闪亮应用程序。
  2. 弹出窗口允许轻松 select 参数,然后“验证”按钮触发 f 的 return 和 selected 参数,就像 shiny with停止应用

我已经已经用 shiny 做到了,但我认为结果有点不令人满意,因为 shiny 应用程序启动和停止的速度很慢(我想如果有一个对象要序列化的话) ).

我看到一些包,比如 vdiffr,似乎通过列出要更改的对象来解决这个问题,因此它们只启动闪亮一次来用一些 selecter 来更改所有内容。如果可能的话,我想避免这种解决方案。

所以问题是:有没有比 Shiny 更方便的 GUI 框架(仅限本地,快速启动和快速 return)?或者一些很好的方法来做到这一点,足够轻(我不想让我的包裹对于一个小的弹出窗口来说非常重)?

这真的取决于您的编码知识。然而,我的第一个方法是尝试改进您闪亮的应用程序。为此,您可以使用 profvis package 来检查您闪亮的应用运行缓慢的确切原因。如果你决定继续使用 Shiny,有很多方法可以减少 Shiny 的启动时间。但是,如果你得出结论,你真的想把闪亮的东西扔到海里,那么你应该考虑使用 JavaScript.

  • 要么用纯 JavaScript
  • 编写完整的应用程序
  • 或者您可以在 Shiny 中使用 JavaScript(例如 r2d3

当然还有@Pork Chop提到的使用rmarkdown或正常markdown的其他方法。

以下是 R 附带的 GUI 工具(不需要包):

(1) 对于足够简单的应用程序,可以使用 select.listmenureadlinefile.choosechoose.dir 并将显示文本或图形用户界面,具体取决于用户所处的环境。这些都带有 R,启动速度非常快,而且易于编程。查看这些命令的帮助页面并尝试:

select.list(c("oranges", "apples", "pears"))
menu(c("oranges", "apples", "pears"))
readline("Enter name of fruit: ")
choose.dir()
file.choose()

(2) tcltk 包能够使用户界面像闪亮一样复杂。这是 R 自带的,所以不需要安装。它只需要使用 library 语句加载。 (如果用户从源代码构建 R,则可以在没有 tcltk 功能的情况下构建它,但在 99% 的所有情况下,tcltk 都会存在)。

这里有几个使用 tcltk 的 R 源代码的简短示例:https://www.stat.berkeley.edu/~s133/Gui-a.html, quite a few more examples at James Wettenhall's site 并且可以 运行 Rcmdr R 包来查看复杂的 tcltk 用户界面的示例,尽管 运行ning Rcmdr 的加载时间比简单的应用程序要长,因为它很大。

因为 tcltk 是 R 本身的一部分,所以它没有 CRAN 页面,但是对于使用 tcltk 的其他包,请查看其 CRAN page 底部的 tcltk2 包的反向依赖关系,因为任何包取决于它也必须使用 tcltk.