像R/SAS这样的统计编程语言是否被认为是功能性或程序性的

Vic*_*tor 14 procedural-programming functional-programming r sas

阅读本文后,我仍然不明白其中的区别

所以,我想,也许我熟悉的一种语言可以作为一个例子,而不是询问功能与程序编程之间的区别.

因此,我的问题是:R/SAS语言是程序性的还是功能性的?

42-*_*42- 21

R主要是一种函数式编程语言.事情是通过副作用完成的,所以它确实有一些例外,因此它不像Haskell那样完全有用.尽管如此,如果您不愿意调整编程风格来使用函数,那么编写高效的R代码将会遇到相当大的困难.(我写这个答案的唯一原因是,调用R是一种面向对象的语言会误导那些希望能够以与使用Java相同的方式向数据对象发送函数消息的人. R使用对象的类作为"通用"函数的调度选择机制,但这与完整的OO语言不同.)

R具有三个,四个或五个主要对象类,具体取决于您如何看待它们以及相关的函数类型.原始的S3函数仅在其第一个参数的类上进行调度可能仍然是最常用的,尽管可以在多个参数签名上分派的S4类在BioConductor世界中被广泛使用.参考分类或R5或原始分类对象最类似于真正的面向对象编程数据类型.我在最后一句话中有点模糊,因为我对它们缺乏经验.

SAS主要是一种程序性语言.您可以定义函数,但这不是大多数人与SAS及其数据集交互的方式,至少在开始时是这样.至少在我15年前使用它时,它并没有真正的对象模型.我认为它的主要优势是对"报告撰写"的出色支持.

(数据操作"硬在R"的评论只表明缺乏经验.我在R中进行数据操作所需的代码量比我的SAS同事使用的代码要少得多.如果你开始用SAS编程,那么转换将很难,但我们这些已经改变的人一般都坚持使用R.)

  • 我同意你的观点.无论如何,我从来都不喜欢SAS的报告的tablular格式,但它们一度被认为是常态.但是,我会询问Shiny是否属于"报告"设施列表,除非有人将该类别包含在"显示机制"​​中.我会提名knitr和Sweave. (2认同)