生信路上遇到的小错误
生信路上遇到的小错误
1、
文件修改后存储发生错误:可能你要保存的文件正打开
2、
Heatmap热图报错Error in hclust(get_dist(submat, distance), method = method) : 外接函数调用时不能有NA/NaN/Inf(arg10)
test <- data[apply(data, 1, function(x) sd(x)!=0),]
再做scale
3、
datexpr2=as.data.frame(lapply(datexpr,as.numeric))##数据框中的字符型数字全部转为数值型数字
4、
data <- read.table(filename, head=FALSE, as.is=TRUE, quote="", comment.char="#", sep="\t",colClasses=c("character",rep("numeric",10)))##其指定数据类型,用到参数为colClasses ,colClasses参数使用一个向量,为每一列指定数据类型。这里指定了第一列为字符型,其余列都为数值型。这样,第一列再读入时依然是 "01"了。
5、
match函数使用时,注意前后顺序,到底是谁匹配谁,匹配完以后有没有NA
6、
Surv函数循环调用时,记得一定要把样本ID输入,1:3列。特别是调用函数的时候,这个地方很容易出错。见程序(E:/1.RStudio/1.DXY_learn2.2/teacher_01/Rep_OVCP.R)
7.
GEO数据集整理出Exp,Label,GID的流程(无论是否需要标准化),见程序(E:/1.RStudio/1.DXY_learn2.2/teacher_01/bio_geo_test.R)
E:/1.RStudio/geo_ovarian_GPL96_570/geo_array_ovarian/GEO_verify_sub_way.R
此程序的表达谱结果中第一列为gene_Symbol,最后一列为对应的entrz_ID(GID),但是可能有部分entrz_ID(GID)是空格,即gene_Symbol没有找到对应的entrz_ID(GID),
GID<-as.numeric(exprSet[,81])#先取出最后一列
GID<-na.omit(GID)#去掉其中的NA
k<-match(GID,probe2symbol_df[,3])#取出对应去掉NA的gene_Symbol的位置
k<-probe2symbol_df[k,2]#取出对应位置的gene_Symbol名字
exprSet0<-exprSet[k,]#取出对应gene_Symbol的表达谱数据
另:每一套数据和其平台都要重新去跑一遍程序,因为对应找到的entrz_ID(GID),都是不一样的。
TCGA(Xena)芯片数据集整理出Exp,Label,GID的流程,见程序(E:/1.RStudio/1.DXY_learn2.2/teacher_01/Rep_OVCP.R)
因为是芯片数据,所以表达谱数据中直接给出了gene_Symbol,只要去找对应的entrz_ID(GID)就行。
TCGA(Xena)测序数据集整理出Exp,Label,GID的流程,见程序(E:/1.RStudio/1.DXY_learn2.2/teacher_01/deal_with_data.R)
因为是测序数据,给出的是ENSG开头的基因名,所以需要先进行一步转换,转换得到gene_Symbol后,再去找对应的entrz_ID(GID)就行。
ps:非常重要的点
①所有的Label需要自己整理。
②Exp,Label,GID整理完后,需要检查样本顺序是否一致,GID是否一致,Exp/GID中是否有NA,检查用语句data[is,na(data)],会给出NA的个数。
③Exp数据行为基因。列为样本。整理tcga的Exp表达谱时行名让它保留gene_Symbol的名字的和不保留gene_Symbol的名字的数据各整理一套,因为你的程序需要用到
8.
写function函数程序嵌套时,从数据库中取出某些列时是以list形式取出来的,而做coxph生存分析时,如果你直接写列名时,就不用管取出来的是什么形式的数据;如果你写的是第几列,那就要确保取出来的数据仍然保持矩阵形式,只有这样数据格式才不会变。详情见:E:/1.RStudio/geo_ovarian_GPL96_570/geo_array_ovarian/OVCP926.R
E:/1.RStudio/geo_ovarian_GPL96_570/geo_array_ovarian/SurPairchoose_bio.R
E:/1.RStudio/geo_ovarian_GPL96_570/geo_array_ovarian/SurPairchoose.R
E:/1.RStudio/geo_ovarian_GPL96_570/geo_array_ovarian/SurpairTest.R
9.
Arrayexpress中数据整理经验:
Exp数据基因名需要删掉前一部分,保留到能找到对应entrezid的部分。
GIDe对应-mtab-386_entrezidl.txt文件,找出GID
Label文件对应下载e-mtab-386.sdrf.txt文件,Hybridization.Name列直接改成mirRNA和RNA,Scan_Name列rep改成’.‘为了和Exp中的列名匹配。
10.
R读取数据出现“line 1 appears to contain embedded nulls”的解决方法
由于数据可能在Windows下编辑过,保存的是UTF-16的格式用R读取可能会出现以下问题。这种情况有以下三种解决方案。
解决方法一:fileEncoding="UTF16LE"或者fileEncoding="UTF16"
sampInfo=read.table("/media/xxx/sampInfo_origin.txt", fileEncoding="UTF16LE", sep="\t", header=T)
解决方法二:在Excel中打开,另存为csv文件即可。
解决方法三:在linux系统里将sampInfo_origin.txt用gedit打开,另存为sampInfo_origin01.txt,“Character Encoding” 改为 UTF-8, “Line ending”改为“Unix/Linux”。
sampInfo=read.table("/media/xxx/sampInfo_origin01.txt", sep="\t", header=T)
11.
正常读入TXT文件需要把行名变为第一列
library(dplyr)
Exp <- tibble::rownames_to_column(Exp,"GeneSymbol")
12.
Rstudio报错:
# Error: package or namespace load failed for ‘clusterProfiler’ in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]):
# 载入了名字空间‘rlang’ 0.4.5,但需要的是>= 0.4.6
解决方法:
关了RStudio。
如果这是安装某个包出现的这个语句,删除对应library的package(如果不知道library的路径在哪里,可以看RStudio的Tools-Global Option-General- R version,举例如下)。
使用R来下载对应的包,而不是RStudio。
PS:你没看错,这是RStudio的锅。纠结了1.5h,尝试了多种方式后解决方案
13.将某个数据框中因子标签“0”,“1”变成字符标签“男”,“女”方法
## 添加变量标签以便后续说明
lung$sex<-factor(lung$sex,levels=c(1,2),labels=c("male","female"))
14.分析和预测与 某基因(如MAP3K3) 相互作用的 miRNA的网站
Targetscan (http://www.targetscan.org/vert_71/)、
miRDB (http://www.mirdb.org/cgi-bin/search。 cgi)、
StarBase (http://starbase.sysu.edu.cn/)
miRTarBase (http://mirtarbase.mbc.nctu.edu.tw/php/index.php)。
15.R 读入TXT文件报错line 87 did not have 10 elements
gse49997_Label<-read.table("gse49997_Label.txt",header=T,stringsAsFactors = F,comment.char = "",sep = "\t")##与普通读入TXT文件相比,增加一个参数限制 comment.char = ""和quote=""即可。
16.去除NA
去除NA值的行na.omit()就行
去除NA值的列 library(dplyr)
dfpra<- dfpra%>%select_if(~!any(is.na(.)))
17.多个向量取交集
genes<-Reduce(intersect,list(A,B,C,D...))