从我们
生信技能树
历年的几千个马拉松授课学员里面募集了一些优秀的创作者,某种意义来说是传承了我们生信技能树的知识整理和分享的思想!
今天的是三周合计15天的数据挖掘授课学员一点一滴整理的授课知识点笔记哦,还有互动练习题哈,欢迎大家点击文末的阅读原文去关注我们学员的公众号哦!
本节课主要学习了文件操作,包括文件读取和文件导出。在这里介绍了R自带的文件导入方式和使用其他R包导入文件。
1 文件读取
R中自带的文件读取函数——read系列函数
# 读取csv、xlsx等表格形式数据
read.csv(file, header = FALSE, sep = " ", quote = "\",
row.names, col.names, nrows = -1, check.names = TRUR)
read.table() # 读取txt数据
read.delim() # 也能读取txt文件,报错的可能相比于read.table小。
file:
数据文件
;
header:表头,如果有就是TRUE,没有就不写或者写FALSE;
sep:数据的分隔符;
quote:用于对有特殊字符的字符串划定连接线的字符串,默认是TRUE或者单引号;
row.names:保存行名的向量;
col.names:指定列名的向量;
nrows:一个正整数,用来指定从文件中读取的最大行数;
check.names:检查数据框中的变量名的语法规则是否符合书写。
读取数据时格式和原来的数据格式不符
读取后格式和excel的一些字符不符合。因为R中的规则不允许有特殊字符,而且每一列都必须有列名。因此会给你自动加上列名,并且将“-”替换为“.”。影响我们将该数据转换成矩阵(只允许一种数据类型)。
ex2 <- read.csv('ex2.csv', row.names = 1, check.names = F)
tips:数据框不允许有重复的行名。
这里主要介绍下课堂学到的几个关键参数,其他参数可以自行查找补充。
用于读取/导出文件的R包
data.table()读取
不能直接设置行名,如果需要就用tibble包来进行添加。
相较基础模块中的函数,readr包中函数速度更快(约快10倍)。
library(data.table)
ex1 'ex1.txt')
# 直接读取出来的文件格式具有两种类型"data.table"和"data.frame"
class(ex1)
# "data.table" "data.frame"
# 要去除"data.table"就需要使用data.table参数
ex1 'ex1.txt', data.table = F)
class(ex1)
# "data.frame"
# 在使用data.table包读取csv时也是同样的代码
ex2 = fread("ex2.csv",data.table = F)
# 使用tibble包设置行名
library(tibble)
ex2 = column_to_rownames(ex2, "V1")
rio读取
命令简单,可以支持多种格式。这个包的读取方式与python包的导入方式有点相似,我还挺喜欢这个包的。
library(rio)
ex1 'ex1.txt')
export(ex1, file = 'ex1.xlsx')
2 数据框导出
write.csv(ex2, file='example.csv')
write.table(ex2, file='example.txt')
3 随堂练习
1. 读取GSE217012_Normalized_RPKM_LOG2_matrix.txt.gz(以保存在工作目录)注:gz是压缩格式,可以不用解压,直接读取。
2. 加载y.Rdata(已保存在工作目录),求gene1列的平均值。
x1 'GSE217012_Normalized_RPKM_LOG2_matrix.txt.gz', check.names = F)
x2 data