一、前言

好难受,今天的R崩了、昨天才安装的包怎么报错了、为啥我装了这个包没反应,什么鬼怎么又乱码了。这玩泥巴(╯‵□′)╯︵┻━┻

不行要佛系生活,好久没写简书了,还是来整理下代码吧┬—┬ノ('-'ノ)

二、常见的生信分析代码整理

今天要说的事如题,这些都是本人完成的流程中非常常见的R代码,以下一一整理并为其注释,没事就经常翻阅这些代码瞧瞧。

不过话说回来,R真的好垃圾啊(/‵Д′)/~ ╧╧

老板来了,我永远喜欢R语言┬─┬ ノ( ' - 'ノ)

1.系统读写相关

设置工作路径

设置工作路径,大家习惯打开R程序,而不是在固定的位置打开R,那么很有可能你就要设置工作路径,这样做的目的是为了节省语句。注意一下,这是/左斜杠,windows下复制路径是\斜杠,新人老容易犯这个错误

setwd("D:/R")

读取文件

读取txt文件,./为当前路径,与OS文件读取方法类似,参数sep = "\t"为以TAB制表符区分行列,comment.char = "#"为#号为注释内容,stringsAsFactors = F 为取消字符串转换为因子,header = T为有表头,fill=TRUE 如果为true,则在行长度不相等的情况下,将隐式添加空白字段。./是指当前目录下的Human_ppi_symbol_2019_7.txt文件,当然也可以写绝对路径。

a

写入文件

写入txt文件,不指定路径则为当前路径下创建,学会举一反三,参数有很多,这里并不能写出所有,因此建议大家用?write.table查阅文档,当你不懂这个函数有什么参数的时候,就强烈建议?+函数名来查阅文档,我就是这么学习的。

write.table(Gene, 'Gene.txt',sep = '\t', quote=F, row.names=F)

2.数据筛选相关

挑选特定的行和列

很多时候我们需要筛选数据,最常见的比如我希望得到某一列的固定逻辑的数据(我这里以大于900的数据为例),写法是这样的:

筛选大于900分的行,以a[x,y]为基础,a$为catch住含有名为“combined_score”的列,>900为筛选逻辑,前提要求数据类型为数字,得到数据

这句话应该这样解析,a$combined_score > 900是逻辑值,返回True和Flase,你也可以理解为返回了对应的行数,那么我们只要把这个行数再赋值给a[x,y]中的x,那么得到的就是含有大于900的所有a 的x行。

a = a[a$combined_score > 900,]

取消科学计数法

取消科学计数法,有一些基因表达量太小或者p.Value太小,会用科学技术进行计算,担心后面筛除的时候会丢失

options(scipen = 400)

筛选同时满足两个要求的数据

筛选同时满足P.Value < 0.05 和 logFC > 0.5的行,因为logFC有负数,可用abs绝对值化,这句话及上句都常用在做出来的DEG(差异表达基因)中

DEG_sort_p 0.5,]

常用语句

统计行列

dim(变量名)

行名称更换

row.names(DEG_sort_p) = DEG_sort_p[,1]

把DEG_sort_p中的差异基因提出来,制作成一个data.frame

diff_Gene = data.frame(Gene=rownames(DEG_sort_p))

这里是蛋白互作的关键合并步骤,第①步,把基因中含有该蛋白的“protein1“merge得到

Gene1=merge(diff_Gene, String_hsa_PPIs_Symbol1, by.x = "Gene",by.y = "protein1",all=FALSE)

判断蛋白基因是否在全在基因里,返回真假值为True

table(Gene$Gene%in%DEG_sort_p$DEG)

unique是去掉基因名字重复的基因,只保留一个,保留有效基因

Gene=unique(data.frame(Gene=Gene[,2]))

判断蛋白基因是否在全在基因里,返回真假值210122为True

table(Gene$Gene%in%DEG_sort_p$DEG)

unique是去掉基因名字重复的基因,只保留一个,保留有效基因

Gene=unique(data.frame(Gene=Gene[,2]))

简单粗暴的合并行

Gene=rbind(Gene,diff_Gene)

把重复基因的行去掉

Gene=unique(Gene)

重命名行

colnames(data2)=c("Gene1","Gene2","score")

把data2的第一列变成character格式,这样做的意义是有一些包要求输入进入格式是这种数据类型,

as.array()、as.data.frame()、as.matrix()、as.numeric()

data2$Gene1

自创代码:阅读当前目录下所有文件,如果里面包含GSE名称的文件夹,则提取出,进而阅读里面包含exp_matrix的表达矩阵并进行merge合并,要求这些GSE都是基于相同平台。意思是,当前目录下有N个GSE文件夹,这些文件夹里面有各自已经完成好的表达矩阵,把这些表达矩阵都取出来并进行merge合并成为一个大矩阵,适合做数据合并用。

dir = list.dirs()

# 筛出路径中包含GSE的文件夹

GSE_dir = dir[grep("GSE",dir)]

# 循环获取目录,要求根目录下必须含有GSE的文件夹,GSE文件夹内含有exp_matrix名称的表达矩阵,要求表达矩阵是相同平台,输出变量名为GSE_all

for (index in 1:length(GSE_dir)){

if (index == 1){

GSE_all

GSE_name = strsplit(GSE_dir[index],"./", fixed = FALSE, perl = FALSE, useBytes = FALSE)

print(GSE_name[[1]][2])

}

if (index >= 2){

GSE_data

GSE_all = merge(GSE_all,GSE_data,by.x = "Symbol",by.y = "Symbol")

GSE_name = strsplit(GSE_dir[index],"./", fixed = FALSE, perl = FALSE, useBytes = FALSE)

print(GSE_name[[1]][2])

}

}

优雅的增加一行,把行名称加回去

GSEall_DEG_sort_p$Symbol = rownames(GSEall_DEG_sort_p)

求平均的函数,敲重要

meanfun

x1

colnames(x1)

for (i in 2:ncol(x)){

x2

x2[,2]

colnames(x2)

x1

}

return(x1)

}

生信分析用python还是r_生信分析中常用的R语句相关推荐

  1. python监控短信_利用Python实现手机短信监控通知的方法

    日常运维工作中,通常是邮件报警机制,但邮件可能不被及时查看,导致问题出现得不到及时有效处理.所以想到用Python实现发短信功能,当监控到问题出现时,短信报警,使问题能得到及时的处理.当然,我相信,用 ...

  2. python数据预处理的方法_python中常用的九种数据预处理方法

    python中常用的九种预处理方法分享 本文总结的是我们大家在python中常见的数据预处理方法,以下通过sklearn的preprocessing模块来介绍; 1. 标准化(Standardizat ...

  3. 预警短信python_zabbix 利用python脚本实现短信告警

    一.编写脚本 cd /usr/local/zabbix-4.0.3/share/zabbix/alertscripts vi zabbix_sms.py 内容如下: #!/usr/bin/python ...

  4. 层次分析法python代码_Python 实现层次分析法

    import csv import numpy as np import tensorflow as tf #大概的思路是: #1.首先输入每个指标下面对应的对比矩阵,每个这个矩阵是由专家比较每两个 ...

  5. python数据分析平均时间间隔_python 数据分析中常用的时间--datetime操作

    Python 中有time 模块和datetime模块,因为datetime使用的语法结构跟sql比较类型,所以,我选择了使用datetime. datetime有以下几个类.总结来看,如下图. 下面 ...

  6. Python学习(1)---matplotlib中常用中文字体的对应名称

    Python绘图标注图时需要选择自己想要的中文字体,现有的中文字体对照表如下: 中文字体名称 ttf 代码设置 宋体 simsun SimSun 华文琥珀 STHUPO STHupo 楷体 simka ...

  7. 在python中常用的输入输出语句分别是_7. 输入输出

    7.1.更漂亮的输出格式¶ 到目前为止,我们遇到了两种写入值的方法:表达式语句 和 print() 函数.(第三种是使用文件对象的 write() 方法:标准输出文件可以作为 sys.stdout 引 ...

  8. python距离向量路由算法_互联网中常用路由协议,路由协议基础,一分钟了解下...

    一.路由基础 Routing protocol 用于路由器动态寻找最优路径,并使路由器都拥有路由表,R/p 决定了数据包的上行路径,eg:RIP IGRP EIGRP OSPF,被动路由协议被分配到接 ...

  9. 『Python - Xlwings』Excel报表自动化中常用函数/方法

    用xlwings做了几个项目,总结些个人常用的方法 e n v env env: → \rightarrow → x l s i n g s : xlsings: xlsings: 0.22.2 创建 ...

最新文章

  1. UIActivityViewController使用
  2. 模型类序列化器ModelSerializer
  3. linux 图形用户界面 x window system 简介
  4. Android开发--多线程中的Handler机制/Looper的介绍
  5. python的easygui_Python的easygui学习
  6. 基于顺序存储结构的图书信息表的最佳位置图书的查找(C++)
  7. Oracle全文索引之四 维护
  8. Linux学习总结(23)——SSH协议详解
  9. 如何使用移动硬盘加密
  10. 如何帮助企业把风控做得更好?
  11. 新型超级生物计算机简介,自然形成的超级生物计算机
  12. C笔记 -- 一个为 IT人士打造的笔记工具
  13. 做网赚赚不到钱,你的方法用对了么?
  14. 大学生面试:教你用“一切细节”征服HR
  15. 华为云为基因检测保驾护航,助力健康行业发展
  16. MNE初学入门(一)
  17. 站长号文库:.lol域名介绍
  18. 管理经济学-使用Python和Z3求解本量利分析
  19. 深度学习笔记之稀疏自编码器
  20. DNA序列 UVa1368

热门文章

  1. ROC、Precision、Recall和Accuracy
  2. 【服务器数据恢复】hp服务器raid5磁盘掉线导致raid5不可用的数据恢复案例
  3. 阿里云虚拟主机搭建多个网站的方法
  4. 这是我和一个偷吃禁果的女孩子的故事……
  5. 分布式基础--初识别分布式与CAP
  6. Armory3D中如何实现network通讯
  7. 扫雷C语言实现(简单版)
  8. jQuery获取标签的方法
  9. 数组(一维数组、多维数组/二维数组)和简单排序算法
  10. SCOI2014省选总结