R:GUI的推出速度很快(闪亮的替代品?)



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

  1. 一些f函数,它在本地启动一个弹出窗口,其中一些参数呈现一些输出,就像在本地启动简单的闪亮应用程序一样
  2. 弹出允许容易地选择参数;验证";按钮触发所选参数的f的返回,如stopApp的闪亮

我已经用闪亮的做了,但我认为结果有点不令人满意,因为闪亮的应用程序启动和停止都很慢(我想如果有对象要序列化的话(。

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

所以问题是:有没有比Shiny更方便的GUI框架(只有本地、快速启动和快速返回(?或者一些很好的方法来做到这一点,那就足够轻了(我不想让我的包裹对于一个小弹出窗口来说变得特别重(?

以下是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,在James Wettenhall的网站上还有很多例子,人们可以运行Rcmdr R包来查看复杂的tcltk用户界面的例子,尽管由于Rcmdr的大尺寸,运行它比简单的应用程序需要更长的加载时间。

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

这实际上取决于您的编码知识。然而,我的第一个方法是尝试改进你闪亮的应用程序。为此,您可以使用profvis软件包来检查为什么您闪亮的应用程序速度缓慢。如果你决定和Shiny在一起,有很多方法可以减少Shiny的开始时间。然而,如果你得出的结论是,你真的想把闪亮的东西扔到船外,那么你应该考虑使用JavaScript。

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

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

最新更新