时隔9年,R语言正式告别2.0时代,跨入3.0纪元

_A_J
 _A_J
发布于 2013年04月04日
收藏 17

R 3.0.0 (代号 “Masked Marvel”)已经释出,R 正式进入了 3.x 时代。

R 3.0.0 带来了约 100 项的新特性,长向量的全面支持和若干项性能提升。长向量(Long Vectors)理论上至多可存储 2^52 个元素,已经远超 CPU 和操作系统地址空间限制。更多说明和代码迁移注意事项可以参考 ?LongVectors . 考虑到向量在 R 中的基础地位,这将给未来 R 对更大规模数据的支撑铺平道路。

另一项值得注意的重要变化是,程序包的 vignette 编译目前已经向 Sweave 以外的引擎开放,即正式引入了 knitr 支持!详情可参看最新版本的 Writing R Extensions 以及 tools::vignetteEngine 。

考虑到长向量特性比较重要,完整翻译了官方公告中的两个重点章节:

用户可见的显著变动:

  • 对于此版本的 R (3.0.0),所有包都需要重新安装。
  • 对长度为 2^31 以上向量的全面支持(仅限 64-bit 系统,32-bit 系统将会报错)
  • 64-bit 版本的 R 可分配内存的大小仅受系统的限制。可通过系统工具(如 bash shell 下的 ulimit )来设置单个 R 进程的整体内存占用,尤其是在多用户环境下。有若干包需要 4GB 以上的虚拟内存来加载。
  • 64-bit Windows 版本的 R 可用内存大小默认限制为已安装内存的大小。该值可通过启动参数 --max-mem-size 或环境变量 R_MAX_MEM_SIZE 设置。
  • 使用负数表示颜色值的方式已被全面废弃,统一抛出错误。

 
长向量支持:

以下内容仅适用于 64-bit 系统:

  • 全面支持多于 2^31 - 1 个元素的向量。适用于原始型、逻辑型、整数型、双精度型、复数型和字符型向量,对列表同理(列表是特殊的向量)。(字符向量的每一元素大小限制仍为 2^31 - 1 bytes)
  • 对向量的多数操作可无缝应用于长向量,对于尚不支持的操作,可能会返回错误 'long vectors not supported yet' 多数是因为它们明确依赖于整数型下标(如 anyDuplicated() 和 match() )或是因为超过了其他的限制(如字符串或矩阵的维度)或相应的操作速度可能会极其缓慢。
  • 对长向量使用 length() 将返回一个双精度值,且长度属性可以通过使用一个双精度值和赋值语句设置为 2^31 或更多。
  • 下标索引的多数功能都可正常使用。总的来说,双精度值下标可用于访问超出 2^31 -1 的元素。
  • 目前对于每维少于 2^31 个元素而总元素个数大于此值的矩阵和数组已经有部分支持。仅有某些矩阵代数的操作支持这样的矩阵,而且通常会花费很长时间。对于其余操作,尚不支持的原因可能是底层的 Fortran 代码有着某种未被声明的限制(如已在复数型 svd() 中发现的那样)。
  • dist() 可计算得到大于 65536 行的距离对象 (但是像 hclust() 一样的函数尚不能处理这样的对象)。
  • 对原始型向量进行 serialize() 不受向量大小的限制(除了受硬件资源所限)。
  • C 函数 R_alloc 现在可以分配 2^35 bytes 或更多内存。
  • agrep() 和 grep() 将针对输入的长向量返回双精度型的下标。
  • 为了支持长向量,许多 .C() 调用都被替换为 .Call() 调用(已经替换或将替换)。遗憾的是有若干包复制了非正式 API 的 .C() 调用,因此会编译失败。
  • .C() 和 .Fortran() 尚不支持长向量的输入。这是一个预警机制,因为现有代码基本不太可能是可以处理长向量的实现(同时 R 的封装也通常假设 length(x) 是一个整数)。
  • sort() 中的多数方法都已支持长向量。
  • rank(), sort.list() 和 order() 已支持长向量 (除了 radix sorting 会比较缓慢)。
  • sample() 可对长向量做均匀抽样。

 

发布公告
https://stat.ethz.ch/pipermail/r-help/2013-April/350751.html

下载地址(源码包)
http://cran.r-project.org/src/base/R-3/R-3.0.0.tar.gz

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:时隔9年,R语言正式告别2.0时代,跨入3.0纪元
加载中

最新评论(9

totmann
totmann
为什么公告是在ETH发布的呢
那句诺言
那句诺言
一点不了解,围观凑热闹
sdhzsx
sdhzsx
什么测度
sdhzsx
sdhzsx
统计太难学了
鞋底两万里
鞋底两万里

引用来自“杜仁栋”的评论

这个语言的主要方向是做什么的

统计计算,我学了一个学期,啥也没学明白。
打杂程序猿
打杂程序猿

引用来自“杜仁栋”的评论

这个语言的主要方向是做什么的

。。。数据。。统计。。图表。。相关的分析。。
seandu
seandu
这个语言的主要方向是做什么的
yyliu
yyliu
R3来了
返回顶部
顶部