4

我正在为我的 R 脚本编写一个 UI,该脚本使用本地(永远不会托管)的 javascript/html 向用户询问生物的一些名称和文件夹的位置。

目前,我只有一个:几个文本框,它们接受输入并传递一个可执行的 R 脚本。最初这个 UI 是作为一个非常用户友好的选项编写的,但慢慢地我意识到可以添加一些漂亮的技巧,例如为用户完成单词的文本框(所以如果用户拼错了生物体的名称, UI 将根据上传的文件更正输入。这将来自生物体文本文件列表,一旦添加文件,R 将立即生成该列表)。

有没有办法让这更有效?例如,从 R 检索绘图(作为 .pngs)并更新我的本地网页并能够在 R 和 UI 之间共享日志文件(请注意,我知道潜在的文件 I/O 错误)..但是对于为了头脑风暴。

我知道 Shiny,但我想要的是一个简单的本地 UI,因为我将处理大数据(我的脚本将处理的平均大约 1 GB 的文件)。

问我问题的另一种方式更重要:

这是集成 PHP 和 R 的示例:http ://www.r-bloggers.com/integrating-php-and-r/ 我正在寻找与 javascript/css/html/jquery 等类似的东西。

谢谢

4

3 回答 3

1

我有一个类似的案例,闪亮对我来说是个好主意。但是,在我做了一些第一步之后,我不再确定这一点。请注意,大多数示例使用闪亮来显示结果。当您开始编辑某些字段并使用数据库时,事情可能会变得一团糟;一旦可以通过程序和用户更改字段,反应性就会受到阻碍。

作为示例,请参见https://gist.github.com/dmenne/4721235/edit。目前闪亮状态的主要问题是您必须使用动态 UI 进行此类工作,这会破坏 ui 和服务器的任何分离,因为您必须在服务器中创建 ui 元素。

闪亮是一个好主意,但对于任何更大的交互来说,现在还为时过早。知道背后有令人惊叹的 RStudio 团队,我相信现在应该有压力

还有什么可以为 R 制作用户界面?TclTk 让我不寒而栗。我经常在 c# 中工作,几年前我一直在使用 R(D)COM 进行接口,但在安装和许可问题后放弃了。现在有 R.DOTNet 效果更好;它是最简单的安装方式,但它不是一个非常活跃的项目,并且容易崩溃。通过 RServe/RServeCLI 的接口是稳定的,但在 Windows 上安装太困难,例如在具有严格安全问题的医院计算机上。

还有Qt。有了活跃的 RInside 社区,这将是一个不错的选择,而且界面很棒。但是,我希望我的编程技能达到 RStudio 的水平。甚至 Dirk 也是概念验证级别之一(在 windows 中使用 rinside 和 qt)这一事实并不令人鼓舞。

于 2013-02-12T08:53:39.317 回答
1

您绝对可以为此使用 nodejs (nodejs.org)。看看https://github.com/elijah/r-noder-node。令人困惑的是,这是两个同名的不同项目。关于后者的更多信息:squirelove.net/r-node/doku.php

近年来,JavaScript 已成为最快的编程语言之一。在我知道的一种情况下,JavaScript 比 C++ 更快。参见:benchmarksgame.alioth.debian.org/u32/performance.php?test=regexdna

但请记住,在 JavaScript 中内存很难管理,因此如果您计划创建长时间运行的进程,您应该在代码上运行某种内存泄漏检测程序。EI:memwatch (npmjs.org/package/memwatch) 或 nodeheap (npmjs.org/package/memwatch)

祝你的努力好运!

PS。抱歉没有真正的链接。我显然不允许发布超过 2 个链接。

于 2013-02-11T00:10:02.470 回答
1

Why wouldn't you be able to use Shiny locally? You design your app on your computer and run it locally with runApp('myapp') from an R-prompt. Unless you are experienced with javascript I would give shiny another look: http://www.rstudio.com/shiny/

The example you linked to can be very easily implemented using Shiny. See link below for a tutorial on how to write the app:

http://rstudio.github.com/shiny/tutorial/#hello-shiny

To run that example locally:

install.packages('shiny')

shiny::runExample('01_hello')

于 2013-02-10T22:49:25.137 回答