我最近对某些事情做了一些统计分析,我很好奇是否有任何编程语言特别适合这个目的.我知道R,但我更喜欢一些更通用的东西(或者R是非常通用的?).
你们有什么建议?是否有任何语言的语法/语义特别针对这个?或者是否有任何语言具有非常好的库?
没有竞争 - R作为S的主要实现(并且恰好是正确的开源和GNU项目).
不仅仅是为了这个目的而设计的S语言(请参阅John Chambers的书籍),但CRAN对特定领域软件包的相当丰富的支持是首屈一指的:超过2000个具有适当质量控制的软件包,通常由专家撰写场.
ACM 在1998年向John Chambers 颁发了ACM软件系统奖,其引用方式与此相同
John M. Chambers
对于S系统,它永远改变了人们分析,可视化和操纵数据的方式.
作为参考,该奖项的其他获奖者是TeX,Smalltalk,Postscript,RPC,"网络",Mosaic,Tcl/Tk,Java,Make,......这不是一个糟糕的公司.
现在,如果您"只想"收集和汇总一些数据,那么任何程序或功能语言都可以.但是如果你想要一些专为数据编程而设计的东西,那么R就是主要的S实现.
毫无疑问,R是统计学的最佳语言,正如Dirk所说.我只想补充几点:
首先,我认为你应该使用R的主要原因是因为社区.在这个阶段,学术界和工业界的专家大量使用它,没有其他语言可以与CRAN上的财富相媲美.
其次,应该承认R语言是一种乐趣.这是我的主要语言,并尝试过的选择,我没有马上放弃它的任何时间的打算.但它也没有垄断数据编程的优势,这种说法可能会走得太远.所有Lisp和Functional语言在数据编程方面都很强大.毕竟,Lisp源自"列表编程",而Lisp对R的影响使语言成为现实.
由于R语言中的一些深层设计问题,R社区的成员(例如Ross Ihaka)实际上将Lisp视为未来的统计语言(参见"回到未来"论文作为参考).例如,没有多线程).
因此,虽然R无疑是统计计算的最佳语言,但我认为熟悉另一种语言如OCaml,Haskell或(可能)Clojure/Incanter有一些价值.
看看 基于clojure的Incanter."Incanter是一个基于Clojure的,类似R的统计计算和图形平台." Clojure是一种基于lisp的语言,在JVM的顶层实现.它可以轻松访问Java库.无法获得更多的通用目的.
根据我的经验,R
这些领域是一种非常强大的语言:
操纵和转换数据.
统计分析.
图形.
但R
绝不是一个三招小马.我还将语言应用于不完全适合上述类别的任务.一些例子是:
通过识别和匹配不同体系结构的静态和动态库,然后运行生成的组来帮助创建OSX通用二进制文件的脚本lipo
.
用于从网页中抓取信息的脚本.
一组用于创建地理参考图像的脚本,使用图像将图像切割成tileset GDAL
,形成JSON
描述输出的清单并将结果上传到网站以供立即显示OpenLayers
.
我最喜欢使用的部分R
是我说的频率:
哇!有一个套餐可以做到吗?!
您可以查看程序sage,它是python解释器的重新实现,允许您使用python语法为统计信息(R,matlab,octave等)调用不同的编程语言.
编写程序进行统计时遇到的一个主要问题是,您最终可能会遇到许多不同的小脚本,每个脚本都执行单独的任务,最终可能会出现混乱的文件夹并导致结果混乱.
因此,除了选择编程语言(我认为其他人已经回答了你的问题)之外,你还需要一种语法来定义脚本的管道:你可以使用程序'gnu/make'(例如读取这个)或者用这个圣人,还是有其他解决方案.