L'Argument de longueur nulle dans R, après, si la fonction

Je suis un argument de longueur zéro après l'exécution du code ci-dessous. J'ai regardé les autres utilisateurs à cette question, mais je suis incapable de comprendre l'erreur.

gi <- pm%*%t(pm); #creates a 5k by 5k matrix by multiplying matrix by its transpose
dim(gi); # checks dimensions of matrix
ngen <- dim(pm)[1];
select <- matrix(F,ncol=ngen,nrow=ngen);
for(i in 1:(ngen-1)){
    for(ii in (i+1):ngen){
        if(gi[i,ii] < llim){
            next;
        }
        hit1 <- p.sum[i];
        hit2 <- p.sum[ii];
        if(gi[i,ii] >= qmat[hit1,hit2]){
            select[i,ii] <- TRUE;
        }
    }
}

Ce code renvoie l'erreur:

Error in if (gi[i, ii] >= qmat[hit1, hit2]) { : 
  argument is of length zero

J'ai le sentiment que le problème est le gi variable comme hit1 et hit2 valeurs de retour, les idées de comment je pourrais résoudre ce problème? Toute aide serait grandement appréciée.

  • Qu'est-ce exactement qmat?
  • Qmat est la suivante: qmat [,1] [,2] [1,] 1 1 [2,] 1 2 '
  • Ne p.sum contiennent des indices? En général, nous ne pouvons pas tester ton code, parce que nous n'avons pas pm, llim, p.sum, ou qmat.
  • table(pm) pm 0 1 9909 91 , llim <- 0, p.sum <- apply(pm,1,sum)
  • dim(pm) donne [1] 5000 2
  • Vous devriez vraiment ajouter ces détails à la question de savoir si les gens n'ont pas à aller chercher dans les commentaires, dans une tentative pour vous aider.

InformationsquelleAutor user1286656 | 2012-03-22