2023.4生信马拉松day5-文件读写
课前提示——解决问题的正确姿势
本节内容大纲
1.认识csv格式和分隔符
-(1)认识csv文件及其打开方式
① excel打开——csv的默认打开方式
② 记事本(txt文本阅读器)打开
③ sublime打开(适用于大文件)
④ R语言打开
#1.读取ex1.txt
ex1 <- read.table("ex1.txt")
注:文件读取是R语言里数据框的来源之一;表格文件读到R语言之后得到一个数据框,对数据框的操作和修改是不会同步到表格文件的;
-(2)分隔符
逗号、空格、制表符\t
补充知识-文件后缀:
csv文件全称是comma separated values,逗号分隔文件;
tsv文件全称是tab separated values,空格分隔文件;
但是:纯文本文件的后缀只起提示作用,只是约定俗成,不决定其具体是什么样的东西(实际输入了什么分隔符就是什么分隔符);
2.将表格文件读取到R语言里
一般用read.table()
读取txt文件,用read.csv()
读取表格文件;非要交叉使用的话读取文件时需要限定好参数;
读取失败的两种表现:报错/意外的结果
-(1)报错:no such file or directory
原因:文件没有存放到工作目录下/有拼写错误;
解决办法:用Rproj管理项目设好工作路径;用tab键自动补齐文件名避免拼写错误。
-(2)默认参数不适用于当前读取的文件
直接读取失败就需要指定一些参数——
① header参数的指定
#1.读取ex1.txt
ex1 <- read.table("ex1.txt") #把列名读到了第一行而没有读成列名;
ex1 <- read.table("ex1.txt",header = T) #read.table默认header是F,不会把第一行读成列名,改成T就可以了
② 列名行名的指定,允许行名列名特殊字符
#2.读取ex2.csv
ex2 <- read.csv("ex2.csv") #默认中-是特殊字符,所以会被R改成.
ex2 <- read.csv("ex2.csv",row.names = 1,check.names = F) #把第一列设置为行名,不改特殊字符
③ 数据框不允许重复的行名,否则会报错;
解决办法:先不加row.names
参数读进来,然后处理第一列的重复值(如两列取平均、去重复),之后再将第一列设置成行名
#注意:数据框不允许重复的行名
rod = read.csv("rod.csv",row.names = 1)
rod = read.csv("rod.csv")
-(3)错误的识别——意外的结果
#3.读取soft.txt
soft <- read.table("soft.txt") #会报错如下图所示
soft <- read.table("soft.txt",header = T,fill = T) #填充空位,其实不对,本来是第四列没有第五列有,读成了第四列有第五列没有
soft2 <- read.table("soft.txt",header = T,sep = "\t") #避免sep把两个制表符识别成一个,把所有看不见的东西都识别程一个制表符
3.将数据框导出成为表格文件
读取→编辑修改→导出
write.csv(test,file="example.csv")
write.table(test,file="example.txt")
注:不要覆盖原文件!要起新的名字生成新的文件——便于重复分析过程和重现分析结果;
4.R 特有的数据保存格式:R data
-(1)R语言特有的格式,只有R可以打开,无法用其他软件打开;
-(2)保存的是变量,不是表格文件;不局限于变量什么数据类型;支持多个变量存到同一个Rdata;
-(3)整存整取,不会因参数不同打开得到不同的东西;
-(4)用save()
函数保存 用load()
函数加载——别忘记加引号、加文件名后缀.Rdata;
save(test,file="example.Rdata")
rm(list = ls())
load("test.Rdata") #注意没有x=
load(file = "soft.Rdata") #把data引入环境
5.实战项目的组织方式
-(1)工作目录下分类组织
注意:分类组织后,读取和保存的时候要在目标文件前加上路径,如输入文件的路径要变成"import/exp.csv",save路径也要相应改变为"export/exp.csv";
-(2)不同分析项目之间的组织
组织后调用文件要注意避免写绝对路径,多写相对路径,例如访问隔壁文件夹的某个文件:
load("../隔壁文件夹/目标文件”)
练习5-1
# 1.读取complete_set.txt(已保存在工作目录)
com.set <- read.table("complete_set.txt")
com.set
# 2.查看有多少行、多少列
dim(x)
nrow(com.set)
ncol(com.set)
# 3.查看列名
colnames(com.set)
# 4.导出为csv格式
write.csv(com.set,file="com.set.csv")
# 5.保存为Rdata,再加载它
save(com.set,file = "com.set.Rdata")
rm(list = ls())
load("com.set.Rdata")
load("y.Rdata")
y
# 6.加载y.Rdata(已保存在工作目录),求gene1列的平均值
x=y[,"gene1"]
mean(x) #运算进行不了多半是数据类型/数据结构有问题,可以class()看看
class(x)
as.numeric(x) #注意没有赋值就没有发生过,这一步之后class(x)会发现依然不是数值型
mean(as.numeric(x))
注意:
矩阵只允许一种数据类型,要改得整个矩阵一起改(不能单独改某一列的数据类型);或者先把矩阵改成数据框再改某列;
要经常检查自己的数据;
哑巴地雷-不报错但错了的代码:
save(test,file="example.csv")
6.用于读取/导出文件的R包
如果一个数据用read.table读取有问题的话换一个函数或许会更方便,可选函数/包:
应用实例:
a=data.table::fread("",data table = F)
#rio包可以方便地处理excel文件,是R语言处理excel最好的函数
library(rio)
aabb = list(a=a,b=b)
export = (aabb, "aabb.xlsx")
test = import_list ("aabb.xlsx")
相关文章
- python 使用 with open() as 读写文件
- HttpClient4.x 文件上传
- H5文件简介和使用
- .h5文件的读取_python读写h5文件
- linux 更改文件读写权限_如何查看自己文件的权限
- Node.js中读写文件操作
- Linux ls命令:显示指定工作目录下的文件及属性信息
- mysql数据库日志存储位置_MySQL数据库之mysql日志文件在哪 如何修改MySQL日志文件位置…「建议收藏」
- php OSS 文件读取和写入文件,workerman 生成临时文件并输出浏览器下载
- 包含漏洞-读写文件以及执行命令
- iOS项目生成静态库文件(.a)详解手机开发
- python读写dbf文件详解编程语言
- Android 文件读写详解编程语言
- python入门(四):标准输出和文件读写详解编程语言
- C++二进制文件读写(read和write)详解
- Win10将迎来新的文件资源管理器图标 色泽丰富对触控更友好
- Linux文件映射实现快速访问(linux文件映射)
- Linux中文件读写函数的使用(linux文件读写函数)
- Linux下合并文件的快捷命令(linux 文件合并命令)
- 解压Linux下Gzip文件解压的技巧(linux下 gzip)
- Linux下编译多个C文件的技巧(linux编译多个c文件)
- 读写xml文件的2个小函数
- vb.net读写文件代码
- php随机数的产生、页面跳转、件读写、文件重命名、switch语句
- php使用多个进程同时控制文件读写示例
- C#递归实现显示文件夹及所有文件并计算其大小的方法