R软件语言环境和内存的基本设置
在这里介绍一些安装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时,尽量显式设定colClasses
和nrows
选项,设定comment.char = ""
(如果没有comment的话),要做到这一步中的每一点,首先需要了解读入数据的详细信息,例如行数可以用wc -l
在终端下查看,用head
命令在终端下显示几行数据内容,然后自行确定colClasses以及是否有comment需要回避。 - 在data.frame中把不需要的列设置成NULL,或者干脆重建一个(在内存足够执行copy的前提下)。
- 将外部数据导入矩阵时,使用scan()函数。