Author: R.W.Flurando
Tags: 数学
下学期的数学课教材是 Probabilities & Statistics with R 。
我想着怎么给自己的拼好网加上运行R代码块的功能,结果发现要么回退到使用JupyterNB,要么放弃在浏览器里运行代码和贴结果。
根据我自己了解,目前想在浏览器里运行R代码,只有webR可用。
而webR,包括markdown那边,都没有现成的R代码块运行相关内容。
也就是说如果我非要加这个功能就真的得家产自研,而这里面的工作量明显不小。
每次渲染前先把编辑区所有合法且带有运行注释的代码块拿出来运行里面的内容并贴在下面带结果注释的代码块里,同时将运行注释改成已运行注释。
看着很简单就一句对吧,用的时候加个运行注释就可以自动运行,且改注释保证不会重复执行。但问题是把代码块拿出来需要的parsing要求很高,我现在完全不会写,目前问我怎么在一个代码块下面插入预定内容的代码块我都不清楚。
如果问题到这里就没了,那我多学学撮一个或者找个别人的相关功能并不困难,问题在于除了这个还有问题。
对标RStudio默认的Rmarkdown功能,还得能在预览区插图片吧,如果返回结果是图片的话。
别说插返回的图片了,我的网页连图片都没有相关处理方案。
就算怎么着有大佬帮忙实现了插图,webR生成图片只会修改一个特定id下的canvas标签内容,作业不可能只有一张图吧?
因此,实现这个功能就是不可能的,除非我们把实时渲染变成由后端rmarkdown::render处理整个编辑区内容,但那样做我这个网页就没有意义了。
毕竟我并不是要一个远程与Rmarkdown实现的交互方案,我要的是远程交互仅限同步数据的Offline First作业方案。
严格来说,实现也是可能的,哪怕运行生图只给预览,需要导出PDF时在连后端Rmarkdown生成也能接受。但我权衡利弊,绝大多数需要做R相关作业的肯定直接在RStudio里用Rmarkdown,再加上AI编程,怕是需要R计算或出图的地方两分钟就搞定了,没有人需要我的配方。所以我这个就算实现了,也只是自用,还会被认为是鸟用没有的模仿实现,得不偿失。
也就是说,算了,很遗憾,如果要结果只能另外运行好了贴过来,比方说图片放在S3存储上,代码复制粘贴。但这么做繁琐程度还不如挤完整时间拿电脑做作业呢。
R社区确实有些拉垮,从编程体验的角度说,不过也难怪,R本就不是为编程而创造的嘛。
如果不用浏览器而是做成直接运行的软件包,想来可以用更完整的R引擎,但是即便不谈开发手机app的麻烦和门槛,光是我没有MacOS电脑来给我的苹果手机开发这一点,就暂不考虑了好吧。