R:GUI可以快速启动替代光泽吗?

问题描述

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

  1. 一些f函数,该函数在本地启动带有一些参数的弹出窗口,这些弹出窗口呈现一些输出,例如在本地启动一个简单的闪亮应用程序。
  2. 弹出窗口允许轻松选择参数,然后使用“验证”按钮触发带有所选参数的f的返回,例如stopApp闪亮。

我已经已经通过闪亮完成了操作,但是我认为结果有点令人不满意,因为闪亮的应用程序启动和停止速度很慢(如果我猜有对象要序列化的话)。

我已经看到一些软件包,例如vdiffr,似乎通过列出要更改的对象来解决此问题,因此它们只启动一次即可使用某些选择器更改所有内容。如果可能的话,我想避免这种解决方案。

所以问题是:是否有某种GUI框架比Shiny更为方便(仅本地,快速启动和快速返回)?或做某件事的一种好方法,那就足够轻(我不想让我的包裹对于一个小的弹出窗口来说太过沉重)?

解决方法

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

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

select.list(c("oranges","apples","pears"))
menu(c("oranges","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,并且可以运行Rcmdr R包以查看复杂的tcltk用户界面的示例,尽管与简单的加载相比,它花费的时间更长。尺寸大的应用程序。

由于tcltk是R本身的一部分,因此它没有CRAN页,但是对于其他使用tcltk的软件包,请在其CRAN page的底部查看tcltk2软件包的反向依赖性,因为任何依赖于它也必须使用tcltk。

,

这实际上取决于您的编码知识。但是,我的第一种方法是尝试改善您的闪亮应用程序。为此,您可以使用profvis package检查为什么闪亮的应用程序确实很慢。如果您决定继续使用Shiny,则有很多方法可以减少Shiny的启动时间。但是,如果要得出结论,那就是您确实想将闪亮的东西扔到外面,那么您应该考虑使用JavaScript。

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

当然,还有@Pork Chop提到的使用rmarkdown或普通markdown的其他方式。