在这里介绍一些安装R软件后语言环境和内存的基本设置,仅在Linux发行版本Fedora下测试,Windows和OS X用户请绕道或者浏览后自举一反三。

设置R语言界面的显示语言

在Fedora系统中,yum源安装R,安装后包含R的文件路径有:

R:

/usr/bin/R

/usr/lib64/R

/usr/include/R

/usr/share/R

/usr/share/man/man1/R.1.gz

/usr/bin/R 这个就是R软件的二进制运行文件,/usr/lib64/R 里是R的所有库文件以及设置,/usr/include/R 存放R需要的头文件,/usr/share/R 包含了R需要调用的其他程序时的共享文件,/usr/share/man/man1/R.1.gz 是R文档

修改R显示语言是在Renviron这个文件里,它的具体位置是/usr/lib64/R/etc/Renviron。只需要在该文件最后添加LANGUAGE=en即可。

设置R可用内存

memory.limit 这个命令只能在windows下使用,那么在linux下有什么类似的命令吗?我选择使用packageulimit来设置(这个package只能设置linux下的内存,对OS X 无效)。

## 安装 ulimit
> devtools::install_github("krlmlr/ulimit")
## 设置内存
> ulimit::memory_limit(2000)
## 测试
> rep(0L, 1e9)
Error: cannot allocate vector of size 3.7 Gb

R语言天生就带着内存和性能的诸多问题,例如:本身不带有多线程运行,读入的数据都放在内存里没有优化。所以像我一样只有一个6年前的2G内存Centrino处理器的小破本,还想做一些大数据的运算的话,请关注内存管理:

  • rm()这个命令是常用的删除对象方法,但是它会删除变量的引用,并不会立即清除占用的内存,如果想立即释放内存,需要用gc()命令。
  • 对于矩阵如果都是整数,请不要用double类型来存储,可以用storage.mode(x) <- "integer" 来改变变量x的存储模式,integer比double要省内存。
  • stackoverflow上面有个提问里提供了一个可以查看R中变量占用内存的函数,如果需要关注变量的内存,可以使用一下。不过现在大家都用Rstudio来写R程序了,Rstudio里可以直接在Environment里采用Grid浏览模式看到每个变量占用内存信息。
  • 使用read.table()函数族把外部数据导入data.frame时,尽量显式设定colClassesnrows选项,设定comment.char = ""(如果没有comment的话),要做到这一步中的每一点,首先需要了解读入数据的详细信息,例如行数可以用wc -l在终端下查看,用head命令在终端下显示几行数据内容,然后自行确定colClasses以及是否有comment需要回避。
  • 在data.frame中把不需要的列设置成NULL,或者干脆重建一个(在内存足够执行copy的前提下)。
  • 将外部数据导入矩阵时,使用scan()函数。