美文网首页RR语言知识干货
R语言与生信应用14-R语法-R文件操作2

R语言与生信应用14-R语法-R文件操作2

作者: BioSi | 来源:发表于2019-05-01 22:56 被阅读72次

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 / 2^{20} 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

相关文章

网友评论

    本文标题:R语言与生信应用14-R语法-R文件操作2

    本文链接:https://www.haomeiwen.com/subject/ocfgnqtx.html