R:快速启动的 GUI(闪亮的替代品?)

Posted

技术标签:

【中文标题】R:快速启动的 GUI(闪亮的替代品?)【英文标题】:R : GUIs fast to launch (alternatives to shiny ?) 【发布时间】:2020-12-18 01:25:09 【问题描述】:

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

    一些 f 函数在本地启动一个弹出窗口,其中包含一些参数呈现一些输出,例如在本地启动一个简单的闪亮应用。 弹出窗口允许轻松选择参数,然后“验证”按钮触发 f 与所选参数的返回,如使用 stopApp 闪亮

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

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

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

【问题讨论】:

为什么不试试 rmarkdown?无论如何,它应该是包开发的一部分 @PorkChop 我不想要一个报告,而是一个允许用户以交互方式选择函数参数的 GUI。我的意思是,闪亮很好,并允许我想要的一切。关键是启动和停止很慢,因此我想知道是否有更适合这种用途的闪亮替代品。 【参考方案1】:

以下是 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 并且可以运行 Rcmdr R 包以查看复杂的 tcltk 用户界面的示例,尽管加载时间比加载简单的应用程序要长,因为到它的大尺寸。

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

【讨论】:

谢谢,tcltk 似乎是我需要的一种可能性,我会检查一下,看看我能做什么。【参考方案2】:

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

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

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

【讨论】:

以上是关于R:快速启动的 GUI(闪亮的替代品?)的主要内容,如果未能解决你的问题,请参考以下文章

通过ctrl+r快速启动程序

Win+R 快速启动程序

在闪亮的 server.R 中更新数据框而不重新启动应用程序

闪亮的应用程序无法在闪亮的服务器上启动

win+r快速打开软件

如何启动项让win10系统下载快速开机