for(i in row.names(data)){ + test=wilcox.test(data[i,] ~ Type) + pvalue=test$p.value + Sig=ifelse(pvalue<0.001,"***",ifelse(pvalue<0.01,"**",ifelse(pvalue<0.05,"*",""))) + if(pvalue<0.05){ + sigVec=c(sigVec, paste0(i, Sig)) + sigGeneVec=c(sigGeneVec, i)} + } Error in model.frame.default(formula = data[i, ] ~ Type) : 参数'data[i, ]'的种类(list)不对
时间: 2024-02-15 12:05:39 浏览: 153
生统第四次作业及答案1
这个错误的原因是在wilcox.test函数的公式中,参数data应该是一个数据框或矩阵,而不是一个单一的向量。在这里,data[i,]返回的是一个长度为1的列表,而不是一个数据框或矩阵。为了解决这个问题,你可以将data转换为数据框或矩阵,并使用适当的列和行来进行子集选择。例如,你可以使用以下代码:
```
for(i in row.names(data)){
test=wilcox.test(as.matrix(data[,i]) ~ Type)
pvalue=test$p.value
Sig=ifelse(pvalue<0.001,"***",ifelse(pvalue<0.01,"**",ifelse(pvalue<0.05,"*","")))
if(pvalue<0.05){
sigVec=c(sigVec, paste0(i, Sig))
sigGeneVec=c(sigGeneVec, i)}
}
```
在这个例子中,as.matrix()函数将data转换为矩阵,并使用[,i]来选择第i行。
阅读全文