R和Javascript回调函数

4
我正在编写一个与 R 脚本相关的用户界面,它会要求用户输入一些生物体名称和文件夹位置,使用 javascript/html 进行本地操作(永远不会托管)。
目前,我只是有几个文本框接受输入并传递可执行 R 脚本。最初,这个用户界面被设计成非常用户友好的选项,但慢慢地我意识到可以添加一些聪明的技巧,比如一个文本框自动完成单词(所以如果用户拼错了生物体名称,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 等创建类似的东西。
谢谢。
3个回答

1
为什么你不能在本地使用Shiny?你可以在计算机上设计应用程序并使用R提示符从本地运行它,即使用runApp('myapp')。除非你熟练掌握javascript,否则我建议你再看一下Shiny:http://www.rstudio.com/shiny/ 你提供的示例可以很容易地使用Shiny实现。请参见下面的链接以了解如何编写应用程序的教程:

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

要在本地运行该示例:

install.packages('shiny')

shiny::runExample('01_hello')


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中的内存非常难以管理,因此,如果您计划创建长时间运行的进程,则应在代码上运行某种内存泄漏检测程序。例如:memwatch (npmjs.org/package/memwatch) 或 nodeheap (npmjs.org/package/memwatch)
祝你好运!
附:很抱歉没有提供真正的链接。显然,我不能发布超过2个链接。

1
我有一个类似的案例,看起来shiny是个好主意。然而,在我完成了一些第一步后,我不再确定了。请注意,大多数示例使用shiny来显示结果。当您涉及编辑某些字段并使用数据库时,事情可能会变得混乱;当程序和用户都可以更改字段时,反应性就会成为问题。
例如,参见https://gist.github.com/dmenne/4721235/edit。对于当前状态的shiny而言,主要问题在于您必须使用动态UI来完成此类工作,这将消除任何ui和服务器之间的分离,因为您必须在服务器中创建ui元素。
shiny是个好主意,但对于任何需要互动的较大项目,现在还为时过早。知道背后有很棒的RStudio团队支持,我相信重点应该放在现在
有什么其他的工具可以用来为R创建用户界面?TclTk让我感到不安。我经常使用c#,几年前我曾经使用过R(D)COM进行接口开发,但由于安装和许可问题而放弃了。现在有一个更好的项目叫做R.DOTNet,它的安装非常方便,但它并不是一个非常活跃的项目,而且容易崩溃。通过RServe/RServeCLI进行接口开发很稳定,但在Windows上安装太困难了,比如在医院计算机上由于其严格的安全问题。

还有Qt。由于活跃的RInside社区,这将是一个很好的选择,而且界面也很棒。但是,我希望我的编程技能能够达到RStudio团队的水平。即使Dirk也只处于概念验证阶段(在windows中使用rinside与qt),这也不鼓舞人心。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接