R语言作为专门的数据处理工具,在某些方面比通用的编程语言要更方便。对于变量的灵活保存与加载,就是R语言的一大特色。用R可以将数据保存为.RData格式的文件,不仅文件更小,而且能够直接加载使用。在RStudio的右上角显示当前变量的区域,有一个保存按钮:

点击后,会将当前环境的所有变量以及变量的值进行保存。保存后,我们会在工作目录找到一个后缀为.RData的文件。该类文件双击运行后,可以直接加载为R当前的变量,也可以右键选择打开方式,加载到RStudio中。使用命令,也可以实现同样的变量保存与加载:

> save.image("D:/Datatest/hello.RData")
> save(numbers_1, file = "hello1.RData")
> load("D:/Datatest/hello.RData")
save.image是保存整个工作空间,save可以保存其中的一个或多个变量。load用来加载RData文件。

使用RData保存数据有很多方便之处,例如:文件大小更小,一个五千万左右的数据矩阵,如果使用csv或txt格式保存大概是600MB,而使用RData只需要100MB左右,如果数据都是数值型,不包含字符型,文件会更小。

相当于一个文件保存了多份文件。有时候我们不需要把所有变量的数据合并,如果存储就需要分别保存,但是RData能够将变量全部保存到一个文件中,更方便管理。

使用R可以直接加载为变量,无需读取文件。

而Python中并没有类似的变量保存方式,需要把数据留存,并写一个读取文件的脚本来实现类似的功能。但是Python也可以读取RData数据,需要调用rpy2这个包,这是一个调用R接口的包。利用rpy2可以做很多事情,适合python与R经常混合调用的人。 最后分享一个变量清除的技巧,我们在处理数据的过程中可能用到了很多临时的变量,比如:我们只需要numbers_1到numbers_4,其它是无用的变量,希望在保存前都删掉。当所需变量少的时候,可以采用save()的方式保存,如果变量很多,且存在规律的时候,下面的方式可供参考:

> temp = c()
> for (i in 1:4) {
+ temp[i] = paste("numbers_", i, sep = "")
+ }
> rm(list = setdiff(ls(), temp))

思想是把所需的变量名字作为一个集合,与工作空间的所有变量取差集,然后把这些差集的变量都删除,也包括了temp这个临时生成的变量。

函数小结

save():用来保存一个或多个工作空间的变量

save.image():保存所有的变量

load():加载变量到工作空间

setdiff():取某个集合对令一个集合的差集

paste():字符串拼接,默认分隔符是空格