23

R和S有什么区别?

4

4 回答 4

27

R FAQ 很好地回答了这个问题:

我们可以将 S 视为一种具有三个当前实现或“引擎”的语言,“旧 S 引擎”(S 版本 3;S-Plus 3.x 和 4.x),“新 S 引擎”(S 版本 4;S-Plus 3.x 和 4.x)。 S-Plus 5.x 及以上版本),以及 R。鉴于这种理解,询问“R 和 S 之间的差异”实际上等于询问 S 语言的 R 实现的细节,即 R 和 R 之间的区别和 S 引擎。

[...]

于 2009-07-23T05:20:16.510 回答
9

如果您正在谈论从命令提示符或脚本工作,最大的区别将是包支持。最根本的区别是下划线赋值运算符。在 S y_2中与 相同y=2。在 Ry_2中只是一个字符串/对象。几年前,当我从 S 迁移到 R 时(当时在 S 5.x 上),我发现我的大部分函数和脚本只需将下划线替换为<-. 我的一个例子是空间统计实现。当时 S 空间统计数据包大约有 8 年的历史,没有更新。R 有几个可用的软件包,并且大多数新研究似乎都是为 R 实现的(免费对学术界来说有很长的路要走)。

S-Plus 有一个巨大的 GUI 前端,表面上这就是几个大价格标签的用途。然而,我的 S 体验现在已经有好几个版本了。

于 2009-07-28T05:38:36.627 回答
5

如果您阅读了关于回答的第一个常见问题解答,那么R 常见问题解答包含有关 S 的 R 实现细节的一些详细信息。

3.3 R和S有什么区别?

于 2009-07-23T05:19:58.960 回答
2

如果我没记错的话,版本 8 SPLUS 现在与 R 兼容,因此 R 库可以在 SPLUS 中使用。

另一个区别是作用域规则——R 使用词法作用域,而 SPLUS 实现的 S 使用动态作用域。这使得 R 更像是一种函数式语言,但所有对象都驻留在内存中。如果我没记错的话,在 SPLUS 中,工作空间中的对象与硬盘上的对象之间存在 1:1 的对应关系——这使得 SPLUS 速度较慢,但​​更适合处理更大的数据集。

于 2009-07-28T05:54:21.913 回答