为了账号安全,请及时绑定邮箱和手机立即绑定

揭秘Rlinguo:让你的手机也能运行R语言的神奇应用

太长不看

Rlinguo 是一个创新的手机应用,在后台用 R 来处理其业务处理逻辑

现在可以下载了,

没错,你没看错,未来其实已经到来,你真的可以在手机上运行R了。

从前……

我已经用R开发网页应用有一段时间了——可能比我愿意承认的时间还要长。在ThinkR,我们已经开发了 {shiny} 应用程序有一段时间了,从小工具到大型仪表盘,这些应用被研究人员和银行家使用。但我们的网络开发不仅限于 {shiny}。我们也创建了 REST API,flex/quarto 仪表盘,以及用 R 生成的动态文件。在过去的几年里,我们探索了各种交付数据产品给客户的方式,主要通过 {shiny} 应用程序,但也通过其他格式。在这些不同的格式中,有一个平台始终让我们难以触及:移动。是的,{shiny} 应用可以进行移动设备优化,而 JavaScript 仪表盘在手机上也能很好地显示。然而,它们并不是原生的移动应用程序。它们无法从应用商店安装,也无法访问手机的 API,让它们支持离线工作也是一项巨大的挑战。

我的手机里有 shiny

"{shiny}在手机上运行"一直是我们的一些客户长时间以来的持续请求。这很好理解:你可能有一个很棒的模型或高效的数据处理流程,而你需要让人们能够通过他们的智能手机访问它——甚至在没有蜂窝网络信号的森林里(是的,这是我们客户实际提出的一个请求)。我们通常的回答是:“抱歉,这不可能。” {shiny}依赖于服务器,由于R不能直接在手机上执行,因此需要一个远程服务器。这意味着你必须有互联网连接。而且,你不能通过应用商店发布它。然而,在最近几个月中,一个新的东西出现了——这是R爱好者多年来梦寐以求的功能:R被编译成WebAssembly。如果你还不了解WebAssembly,可以将其视为一种在JavaScript中运行R的方法。如果你已经了解它,那么你知道它其实更复杂一些。这个新工具叫做webR

假如...的那个瞬间

我已经用webR进行了几个月的实验,主要从Node.js的角度来看。在这段时间里,我开发了两个工具,webrclispidyr,它们专门用于结合R和Node.js的项目。尽管这些工具有可能彻底改变应用程序的开发,但它们仍然依赖于远程的网络方法:R运行在服务器上的一个Node.js进程中。这意味着目前还没有离线功能,无法在应用商店中部署,也没有原生的移动应用功能。今年夏天,我们又收到了一个新的请求:“希望将 {shiny} 作为原生移动应用。”就在我们准备给出标准回答时,我有了一个“如果我们可以将webR用于创建移动应用的JavaScript框架,会怎样?”的想法。带着这个想法,我们制作了一个概念验证(PoC):一个可以运行一条R代码的移动应用。这种全功能的应用以前从未实现过,但我们相信它是可以做到的。不幸的是,客户最终没有继续这个项目。开发移动应用需要的技能超出了典型的 {shiny} 开发者的范围,他们需要一种可以独立维护的软件。尽管如此,我们决定基于已有PoC全力以赴,开发一个完整的应用——一个用户友好、略带趣味,并且可以通过应用商店发布的应用,以此证明这确实是可行的。接下来的几周,ThinkR 的团队将这一愿景变为现实。Margot 确定了项目的方向,并撰写了概念文件(关于这点的更多内容将在未来的博客文章中介绍),Arthur 使用 Excalidraw 和 Figma 制作了应用的原型,展示了他出色的UI技能,而我(Colin)则专注于后端开发(因为我在这方面的能力还有待提高,前端工作也不是我的强项)。这个激动人心的旅程的结果是 Rlinguo,一款可以运行R的原生移动应用。是的,你没有看错——R现在可以在你的手机上运行,而这款应用正是从概念验证到现实的转变

未来的R会是什么样子

Rlinguo 是一个既有趣又有点古怪的游戏,挑战用户去辨认给定的 R 函数属于哪个包。诚然,这可能不是最实用的技能——知道 mean(){base} 包中,而 median(){stats} 包中,这并不一定让你成为更好的程序员(尽管我必须承认,它们分属不同的包这让我有点不爽)。这款应用的主要目的是证明原生移动应用利用 R 的能力不仅可行,而且可以为更广泛的应用铺路。这款应用展示了几个很酷的功能:

  • R 指尖上的功能,口袋里的力量: 该应用以多种方式展示了 R 的功能,例如从已安装的包列表中执行 sample() 函数,以及从导出的函数列表中执行 sample() 函数。在关于页面上,用户甚至可以执行 runif() 函数以确认 Rlinguo 实际在背后运行 R。
  • 离线功能: Rlinguo 设计为无需互联网连接即可工作,使用户能够在智能手机上部署 R 模型,即使在偏远地区也能使用。
  • 支持真正的数据科学工作流: Rlinguo 重现了典型的数据科学工作流程。数据存储在本地 SQL 数据库中,通过查询、在 R 中处理(如计数和透视)后,再返回给 JavaScript 进行可视化。结果?一个用户友好的数据可视化界面。
  • 集成 R 包: 该应用创造性地使用了 R 包。当你正确猜出一个函数时,会收到 praise::praise() 的消息;如果你错了,一个自定义函数会提供反馈(不过目前还没有专门提供鼓励词的包)。
  • 提供出色的用户体验: Rlinguo 致力于提升可用性,弥补了工具中常见的短板。目标是打造一个更加精致且使用愉快的应用。
  • 将基于 R 的应用部署到应用商店: Rlinguo 证明了完全有可能创建一个由 R 驱动的移动应用,并将其发布到主要的应用商店。

Rlinguo您现在可以在苹果App Store和Google Play上下载。我们认为这是新一轮创新的开始,借用一句流行语,“宝贝,你从未有过这样的感觉。”

你有具体的使用情况吗?

在手机上运行 R 的想法一直很受客户欢迎——有各种各样的可能。你需要这个功能吗?你有没有在手机上使用 R 的好例子?太好了,我们来聊聊吧!


注:

(*) 我们在App Store上找到了两个含有webR的应用,但这些应用似乎主要是用来包装JavaScript集成开发环境(IDE),并没有达到我们的目标:开发一个使用R作为核心逻辑的真正移动应用。

由于没有提供源文本和翻译内容来审核和改进,因此无法进行编辑。请提供需要反馈的源文本及其初始翻译。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消