teste t emparelhado falha no loop de aplicação (editado)

Em resposta aos comentários úteis, editei a pergunta original (na qual eu supusera que um loop for e um loop aplicar produzem resultados diferentes

Estou usando R para executar um grande número de testes t de 2 grupos, usando a entrada de uma tabela delimitada. Seguindo as recomendações daqui e de outros lugares, tentei 'for-loops' e 'apply' para fazer isso. Para o teste 'normal', ambos funcionam bem e fornecem os mesmos resultados. No entanto, para um teste t emparelhado, a aparência parece funcionar enquanto o loop de aplicação não. Mais tarde, descobri que os dois loops sofrem do mesmo problema (veja abaixo), mas os for-loops lidam com mais tranqüilidade com a situação (apenas um ciclo do loop retorna um resultado inválido) enquanto o loop de aplicação falha completament

Meu arquivo de entrada é assim: (a primeira linha é uma linha de cabeçalho, as linhas de dados têm um nome, 4 pontos de dados para o grupo 1 e 4 pontos de dados para o grupo 2):

header g1.1 g1.2 g1.3 g1.4 g2.1 g2.2 g2.3 g2.4
name1  0    0.5  -0.2 -0.2 -0.1 0.4 -0.3 -0.3
name2  23.2 24.4 24.5 27.2 15.5 16.5 17.7 20.0
name3  .....

e assim por diante (no total ~ 50000 linhas). A primeira linha de dados (começando com name19 acabou sendo a culpada.

sta é a versão do loop for que funciona melhor (falha na linha problemática, mas lida corretamente com todas as outras linhas

table <- read.table('ttest_in.txt',head=1,sep='\t')
for(i in 1:nrow(table)) {
   g1<-as.numeric((table)[i,2:5])
   g2<-as.numeric((table)[i,6:9])
   pv <- t.test(g1,g2,paired=TRUE)$p.value
}

Esta é a versão 'aplicar' que causa problemas

table <- read.table('ttest_in.txt',head=1,sep='\t')
pv.list <- apply(table[,2:9],1,function(x){t.test(x[1:4],x[5:8],paired=TRUE)$p.value})

Uma das ~ 50000 linhas de dados é problemática, pois as diferenças de todas as comparações pareadas são idênticas, o que em um teste t emparelhado resulta em um valor p indefinido (essencialmente zero). O loop de aplicação trava com o erro 'dados são essencialmente constantes'. Para mim (como um novato em R), não parece uma boa ideia travar o script inteiro apenas porque o teste t.test não gosta de um dado. No loop for, essa linha de dados também resulta em uma mensagem de erro, mas o loop continua e todos os outros testes t fornecem resultados correto

Fiz algo fundamentalmente errado? Esse comportamento proíbe essencialmente o uso de aplicar-loops para esse tipo de análise em lote. Ou existe uma maneira padrão de contornar esse problema. Por que o teste t simplesmente não retorna algo inválido para esse valor p específico em vez de sai

questionAnswers(8)

yourAnswerToTheQuestion