R语言介绍
摘自CRAN:
R is a language and environment for statistical computing and graphics. It is a GNU project which is similar to the S language and environment which was developed at Bell Laboratories (formerly AT&T, now Lucent Technologies) by John Chambers and colleagues.
此外, R 还受到了 Lisp 的影响, 因此偏向函数式编程. R 有时也被视为一种 Lisp 方言, 因其具有 Lisp 的许多特征:
函数是一等公民
几乎所有语句都是函数调用
例子: 赋值
例子: for 循环
存在未求值状态的 symbol/call (二者都被称为 language objects)
symbol
call
R 中一切语句的执行基本可以概括为 symbol/call 在特定 environment 中求值, 具有高度的简洁性和一致性.
函数调用以可修改的列表形式存储
这与 Lisp 中”代码即数据”类似.
此处 对 R 与 Lisp 的关系有更多讨论.
这些与 Lisp 相近的特征使得 R 能原生实现各种类似宏/元编程的效果, 如:
Data-Masking
管道操作符: magrittr 包实现了一系列管道操作符, 避免嵌套多个函数
管道操作符的一个简略实现如下:
基于 AST 将 R 函数翻译为其他语言: quickr 包将 R 翻译到 Fortran 以提高性能