R语言做临床相关性分析
代码如下
setwd("D/cgga") #修改工作目录
expFile="rocSigExp.txt" #表达数据文件
clinicalFile="clinical.txt" #临床数据文件
exp=read.table(expFile,sep="\t",header=T,check.names=F,row.names=1) #读取表达数据文件
cli=read.table(clinicalFile,sep="\t",header=T,check.names=F,row.names=1) #读取临床数据文件
exp=exp[,3:ncol(exp)]
samSample=intersect(row.names(exp),row.names(cli))
exp=exp[samSample,]
cli=cli[samSample,]
pFilter=0.05
#临床相关性分析,输出表格
outTab=c()
outTab=rbind(outTab,c("id",colnames(cli),"SigNum"))
colnames(outTab)=c("id",colnames(cli),"SigNum")
for(i in colnames(exp)){
clinicalPvalVector=c()
sigSum=0
for(clinical in colnames(cli)){
tab1=table(cli[,clinical])
labelNum=length(tab1)
rt1=cbind(expression=exp[,i],clinical=cli[,clinical])
if(labelNum==2){
cliTest<-wilcox.test(expression ~ clinical, data=rt1)
}else{
cliTest<-kruskal.test(expression ~ clinical, data = rt1)}
pValue=cliTest$p.value
clinicalPvalVector=c(clinicalPvalVector,pValue)
if(pValue<pFilter){
sigSum=sigSum+1
}
}
geneClinical=c(i,clinicalPvalVector,sigSum)
outTab=rbind(outTab,geneClinical)
}
write.table(outTab,file="clinicalCor.xls",sep="\t",col.names=F,row.names=F,quote=F)
报错
Error in wilcox.test.default(x = c("5.45637446782799", "5.56624404335285", :
'x' 必需是数值
怎么解决呀
将脚本中出现的第二个和第三个expression替换成as.numeric(expression)就可以正常运行。
Error提示你秩和检验的数据不是数字,显然,你发出来的报错信息中数字也被引号引起来了,说明这是字符串,因此会报错。
你需要在做秩和检验之前检验你的数据是否是数值类型,如果是字符串,可以用as.numeric函数将数据变成数值类型。