美好的一天,当然是从快乐学习开始啦!
老师又布置任务啦,现在来复盘一下!
(咳咳 图文无关,划掉重新说)
用R进行简单的数据处理,小菜鸡从一开始就遇到了问题,这代码敲起来咋这么蹩脚捏,真是寸步难行啊/(ㄒoㄒ)/~~
(果然实战能够很好的发现问题,小菜鸡下定决心要苦练代码了)
问题:
1.如何批量读取文件?
(比如说嵌套在一个个文件夹里的文件,你想手动挨个点开我也没话说)(转录组salmon的下游分析文件读取的方式蛮好的,有空好好学下)
2.读取文件指定列/行
(懒得读取一整个文件然后再提取,有什么办法可以直接提取吗?)
3.提取基因列表时的各种操作,比如取交并补集,全连接左连接右连接啥的
第三个问题中一些比较基础的操作参考 R语言 -- 交并补:intersect、union、setdiff、Reduce多重操作 - 简书 (jianshu.com)
当然小菜鸡早上做的时候毫无技术可言,因为只有6个文件,所以都是手动暴力读取的。现在想来进一步研究一下这个很重要很实用的问题。
问题1:批量读取文件
这里先看一下salmon下游分析是怎么读取文件的(之前欠的债了属于是)
开始之前认识一下你的数据!
查看一下quant.sf文件:
首先,获取文件路径
list.files() 输入当前路径,获取当前路径下所有文件的文件名
file.path()建立文件的路径,本例中即生成dir/name/quant.sf路径,默认把输入的参数用/连接,还可以设置不同的连接符,如fsep="\"
建立好路径之后,为路径赋一个名字
然后,根据路径读取文件
tximport导入salmon的结果,之后会将结果传递给DESeq2,附上函数说明
tx2gene是转录本与基因映射表,用于 tximport 的 tx2gene 必须第一列是转录本 ID 第二列是基因 ID, 对列名无要求。(tx2gene是如何生成的呢?见下方图)
这一步核心代码:
最后,查看结果:
结果怎么来的看懂了吗?推荐阅读 记录tximport对salmon数据处理的R语言源码 - 知乎 (zhihu.com)
问题2:读取文件指定行列
徐老师的这篇文章讲得非常详细了,先从这篇开始学习!
[「R基础」如何读取大文件的部分内容 - 简书 (jianshu.com)]
(https://www.jianshu.com/p/2fcfab4d4492)
-
读取指定行 :给出2种方法
方法1:使用read.table()内置参数nrows就可以啦
方法2:使用readLine()读取行,然后再用strsplit()以“\t”为分隔符进行切割
(用python处理碱基序列的时候经常这么干)
-
读取指定列
这个有点难啦,其实懂了也就那么回事
1.准备好class(第三张图是关键),他是字符串,存放文件每一列的数据类型,注意:保留你需要的列的数据类型不变,将剩下的设为NULL,最后加上第1列
2.按照修改后的class读取文件
warning可以看这个贴子:关于r:在read.csv中指定colClasses | 码农家园 (codenong.com)
最后,附上一张徐老师的图,共勉💪💪💪