我使用R来运行大量数字,使用来自分隔表的输入,该表是40000行和4列的堆肥。我试图实现t测试,p值,但我有错误(数据基本上是常数),我使用for循环并申请两种情况我有同样的问题代码是:
NormData3= NormData1[1:40000,1:5]
for(i in 1:nrow(NormData3)) {
g1=NormData3[i,2:3]
g2=NormData3[i,4:5]
p[i]=t.test(g1,g2,var.equal=TRUE)$p.value
}
我不知道问题是什么?
答案 0 :(得分:2)
软件可以识别合理的情况,这很好 答案无法计算。此时,有两种可能的行动: (1)因信息错误而停止,(2)默默返回NA。
如果您在迭代循环中运行它,则需要第二个输出。这是一个小功能:
my.t.test.p.value <- function(...) {
obj<-try(t.test(...), silent=TRUE)
if (is(obj, "try-error")) return(NA) else return(obj$p.value)
}
在代码中使用此函数代替t.test。这不会打扰你的循环并允许它继续。