戏说R语言系列8

2018-06-06  本文已影响0人  eryesanye

Dirk Eddelbuettel的网站上有很多“EXTENDING R”的内容。

很多 EXTENDING R

翻译过来是“扩张R”。“扩张”并不是新鲜的词汇, John Chambers早在1976年为了能够让更多用户使用Fortran,开发了S语言, 暨R语言的前身,所以说R语言本身也是“扩张”的产物。

不过,最能代表“扩张”精神的应该是Dirk Eddelbuettel和John Chambers等人共同开发的Rcpp。我们通过一些资料来看一下 Rcpp的“扩张”特点。

这篇文档来自北卡罗来纳州立大学统计系的大数据课程笔记。

R和C++的区别

Hadley Wickham在Advanced R中,具体说明了C++可以做哪些比较重的工作。

大力水手 C++

除了Rcpp之外,还有很多“EXTENDING R”的工具。Dirk Eddelbuettel 在今年4月的讲座里列举了很多。

例如,John Chambers 在2016年推出了XR工具,这款工具提供了一个新的R语言对接其他语言的接口框架,同时还推出了基于XR的XRPython和XRJulia。不过,可能是推出的时间不久,关注度不高。另外,这种工具不太依赖R自身的语法,很大程度依赖其他语言(例如python或Julia)的语法,所以使用rmarkdown可能更加方便一些。

还有一些比较专业化的工具。例如reticulate,用于调用深度学习工具tensorflow和keras的Python库。不过,tensorflow和keras都已经推出了支持R的接口,而且还挺好用的。reticulate在另外一些领域的扩张,值得关注一下,如下图所示。其中,greta是深度概率编程工具,spacyr是用来做自然语言处理的,h2ogpu是以GPU计算单元的机器学习求解器,这些都比较高大上。reticulate是基于XRPython和Rcpp开发的。

reticulate

Dirk Eddelbuettel比较了Rcpp、JuliaCall、reticulate、原生R的计算速度,如下图所示。Rcpp是最快的,比原生R快了246.5倍,所以使用Rcpp是值得的。

Julia也是很快的!

这里讲“扩张”还有一层意思。木心说,人类最自恋,因为人类喜欢照镜子。人类中最自恋的是哲学家,因为他们嫌镜子不够大,一定要以整个宇宙作为镜子。

所以说,鉴于宇宙不断膨胀的现实,我们保持一点扩张精神终究有些好处,不要把自己变成“坚不可摧的核桃”,那样我们就没什么镜子可照的了。

上一篇 下一篇

猜你喜欢

热点阅读