Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
Boucle for pour chercher le maximum dans une colonne
3 participants
Page 1 sur 1
Boucle for pour chercher le maximum dans une colonne
Bonjour,
J'ai mon tableau v pour lequel je cherche à trouver,dans une même colonne (colonne 2) et pour tout deux lignes i et j, le maximum de v[i,2] et v[j,2],
et représenter le résultat obtenu dans une matrice symétrique.
J'ai essayé avec le code suivant:
Pourriez-vous m'aidez?
Merci.
J'ai mon tableau v pour lequel je cherche à trouver,dans une même colonne (colonne 2) et pour tout deux lignes i et j, le maximum de v[i,2] et v[j,2],
et représenter le résultat obtenu dans une matrice symétrique.
J'ai essayé avec le code suivant:
- Code:
max <- function (a,b)
+ {if (a > b)
+ max <- a
+ else
+ max <- b
+ return(max)
+ }
> nr <- nrow(v)
> MAX <-matrix(nr,nr)
> for(i in 1:nr){
+ for(j in 1:nr){
+ MAX[i,j]=max(v[i,2],v[j,2])
+ }
+ }
Error in `[<-`(`*tmp*`, i, j, value = 34L) : indice hors limites
Pourriez-vous m'aidez?
Merci.
khaoula gammoudi- Nombre de messages : 8
Date d'inscription : 03/02/2013
Re: Boucle for pour chercher le maximum dans une colonne
Plusieurs points :
1) La fonction max() dans R existe déjà. Inutile de la redéfinir.
2) La fonction matrix() demande ou moins trois arguments, pas deux, et le premier définit les données. Si vraiment vous voulez utiliser deux arguments, alors il faut les nommer, ici matrix(nrow=nr,ncol=nr). C'est la source de votre erreur, je pense.
3) Vous êtes ici sur un forum de statistique. Pour ce genre de questions, je vous conseillerais plutôt d'aller sur un forum spécifique sur l'usage du logiciel R. Votre question n'est pas vraiment une question de statistique.
Cordialement, Eric.
1) La fonction max() dans R existe déjà. Inutile de la redéfinir.
2) La fonction matrix() demande ou moins trois arguments, pas deux, et le premier définit les données. Si vraiment vous voulez utiliser deux arguments, alors il faut les nommer, ici matrix(nrow=nr,ncol=nr). C'est la source de votre erreur, je pense.
3) Vous êtes ici sur un forum de statistique. Pour ce genre de questions, je vous conseillerais plutôt d'aller sur un forum spécifique sur l'usage du logiciel R. Votre question n'est pas vraiment une question de statistique.
Cordialement, Eric.
Eric Wajnberg- Nombre de messages : 1238
Date d'inscription : 14/09/2012
Re: Boucle for pour chercher le maximum dans une colonne
Bonjour,
je partage l'avis d'Eric sur la fonction max et les matrices. Par contre je ne le partage pas sur le côté R puisque la question est posée dans la section 'R'. Sinon autant virer ces sections.
Pour le reste je ferais plutôt comme ça pour gagner du temps par rapport à la double boucle :
je partage l'avis d'Eric sur la fonction max et les matrices. Par contre je ne le partage pas sur le côté R puisque la question est posée dans la section 'R'. Sinon autant virer ces sections.
Pour le reste je ferais plutôt comme ça pour gagner du temps par rapport à la double boucle :
- Code:
# avec un exemple pour v
v <- data.frame(y = gl(2,5), z = rnorm(10))
MAX <- matrix(0, nrow(v), nrow(v))
MAX[lower.tri(MAX)] <- combn(10, 2, function(x) max(v[x,2]))
MAX <- MAX+t(MAX)
diag(MAX) <- v[,2]
droopy- Nombre de messages : 1156
Date d'inscription : 04/09/2009
Re: Boucle for pour chercher le maximum dans une colonne
Ok droopy. Mais je note que l'auteur de ce post a posté exactement la même question (et a d'ailleurs obtenu la même réponse) sur le forum français sur R, et ceci deux jours avant l'avoir posté ici. Je reste peu convaincu de la démarche. Mais bon, ce n'est pas très grave.
Cordialement, Eric.
Cordialement, Eric.
Eric Wajnberg- Nombre de messages : 1238
Date d'inscription : 14/09/2012
Sujets similaires
» Transformation colonne .
» Chercher le nombre d'occurences d'une valeur
» maximum de vraisemblance
» Courbe par colonne .
» Supprimer une colonne
» Chercher le nombre d'occurences d'une valeur
» maximum de vraisemblance
» Courbe par colonne .
» Supprimer une colonne
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum