Clojure 与 R:数据分析的优缺点

机器算法验证 r
2022-02-08 15:40:02

我有一个在不久的将来学习 R 的计划。阅读另一个问题,我发现了有关 Clojure 的信息。现在我不知道该怎么办。

我认为 R 对我来说的一大优势是经济学中的一些人使用它,包括我的一位主管(尽管另一位说:远离 R!)。Clojure 的一个优点是它是基于 Lisp 的,而且当我开始学习 Emacs 并且我热衷于编写自己的定制时,它会很有帮助(是的,我知道 Clojure 和 Elisp 是 Lisp 的不同方言,但它们是Lisp 和我想象的相似)。

我不能问哪个更好,因为我知道这是非常个人化的,但是有人可以给我 Clojure x R 的优势(或优势),尤其是在实际方面吗?例如,哪一种应该更容易学习,哪一种更灵活或更强大,哪一种有更多的库、更多的支持、更多的用户等等?

我的预期用途:我的大部分估计应该使用 Matlab 完成,所以我不是在寻找任何在统计分析方面太深入的东西,而是用 Excel 代替初始数据操作和可视化、汇总统计和图表的软件,还有一些基本的统计分析或我估计的初步尝试。

3个回答

首先让我说我喜欢这两种语言:任何一种都不会出错,而且它们在进行数据分析方面肯定比 C++ 或 Java 更好。

对于基本数据分析,我建议使用 R(尤其是 plyr)。IMO,R 比 Clojure 更容易学习,尽管这并不完全明显,因为 Clojure 基于 Lisp 并且有许多很棒的 Lisp 资源可用(例如SICP)。Clojure 中的关键字较少,但这些库更难安装和使用。另外,请记住,R(或 S)很大程度上是从 Scheme 派生的,所以在使用它时你会从 Lisp 知识中受益。

一般来说:

R 的主要优势是 CRAN 上的社区(超过 2461 个包并且还在增加)。在不久的将来,没有什么可以与之相比,即使是像 matlab 这样的商业应用程序。

Clojure 具有在 JVM 上运行的巨大优势,这意味着它可以立即使用任何基于 Java 的库。

我要补充一点,我不久前发表了一个关于 Clojure/Incanter 与 R的演讲,所以你可能会感兴趣。根据我的创建经验,对于简单的操作,Clojure 通常比 R 慢。

在过去的 6-7 年里,我一直是 R 的重度用户。作为一种语言,它有几个设计限制。然而,对于计量经济学和数据分析方面的工作,我仍然全心全意地推荐它。它有大量与计量经济学、时间序列、消费者选择建模等相关的软件包,当然还有出色的可视化、良好的代数和数值库等。我不会太担心数据大小的限制。尽管 R 不是为“大数据”而设计的(与 SAS 不同),但仍有一些方法可以绕过它。包的可用性是真正的区别。

我只阅读了 Clojure 的语言规范,它既漂亮又干净。它以自然的方式解决了并行化和规模化问题。而且如果你有一些基本的java或OOP知识,你可以从大量的高质量java库中受益。

我对 Clojure 的问题是最近的单人 (R.Hickey) 操作,因此 1) 非常危险 2) 非常不成熟 3) 采用小众。非常适合想要尝试新事物的爱好者、早期采用者、CS/ML 人员。对于将语言视为达到目的的手段并且需要可以与他人共享代码的非常健壮的代码的用户来说,成熟的语言似乎是一个更安全的选择。只知道你是谁。

更新(2014 年 8 月):正如下面的 @gappy 评论,从 R 版本 3.0.0 开始,限制更高,这意味着 R 能够处理更大的数据集。

这是一个数据点:R 有一个“大数据上限”,这对于了解您是否打算使用庞大的数据集很有用。

我不确定同样的限制是否适用于 Clojure/Incanter,它是优于 R 还是实际上更糟。我想 JVM 可能可以处理大型数据集,特别是如果您设法利用 Clojure 的惰性特性的力量。