R文件操作2
读取数据
R中有很多函数可以读取数据
- read.table, read.csv用来读取制表符分隔的数据
- readLines 读取文本文件的一行
- source 读取R代码文件 (与dump对应)
- dget 读取R代码文件 (与dput对应
- load 读取保存的工作空间
- unserialize 读取一个serialize封装的二进制R对象
写入文件
R中有很多功能类似的函数将数据写入文件
- write.table
- writeLines
- dump
- dput
- save
- serialize
使用read.table函数读取数据
read.table函数是最长用的读取数据的函数。它有几个非常重要的参数:
file 文件的名字或者链接
header 逻辑值表示文件是否有表头
sep 分隔符,指定列分隔符是什么
colClasses 字符串向量表示数据集中每列的类
nrows 数据集的行数
comment.char 字符串表示注释
skip 忽略开始的多少行
stringsAsFactors 逻辑值,设置字符串变量是否用因子结构储存
对于中小型数据集,使用read.table函数的默认参数即可
data<-read.table("foo.txt")
- R会自动忽略以“#”开头的行
- 设置数据集的行数(需要占用多少内存)和每列数据的变量类型可以加快R的运行效率f
read.csv函数除了默认分隔符是逗号以外,其他参数和read.table函数相同。
使用read.table函数读取大数据集
对于大型数据集,首先大致估计一下需要使用多少内存来储存数据集,如果数据所需要的内存大于计算机的物理内存,那就需要使用其他方式处理数据。
- 如果数据集中没有注释行将参数comment.char = ""
- 使用colClasses参数可以提高一倍的读取速度,这要求指定数据集中每一列的数据类型。如果每列都是数值,可以直接设置参数colClasses = "numeric"。另一个快速设置每列的类型的方法如下:
initial<-read.table("datatable.txt",nrows=100)
classes<-sapply(initial,class)
tabAll<-read.table("datatable.txt",colClasses=classes)
- 设置nrows参数。不能提速当能够帮助R优化内存的使用,可以使用Linux的wc命令来计算数据集的行数。
了解一些操作系统
使用R处理大数据集时,需要了解一些操作系统的情况。
- 电脑的内存多大
- 有什么应用程序在运行
- 是否有其他用户登陆到该操作系统
- 什么操作系统
- 32还是64位操作系统
计算内存使用
一个1,500,000行和120列的数值型数据框占用内存的计算:
1,500,000 × 120 × 8 bytes/numeric
= 1440000000 bytes
= 1440000000 / bytes/MB
= 1,373.29 MB
= 1.34 GB
课程分享
生信技能树全球公益巡讲
(https://mp.weixin.qq.com/s/E9ykuIbc-2Ja9HOY0bn_6g)
B站公益74小时生信工程师教学视频合辑
(https://mp.weixin.qq.com/s/IyFK7l_WBAiUgqQi8O7Hxw)
招学徒:
(https://mp.weixin.qq.com/s/KgbilzXnFjbKKunuw7NVfw)
网友评论