R语言做临床相关性分析时,wilcox.test报错

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函数将数据变成数值类型。