Forum de Statistiques
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Les posteurs les plus actifs de la semaine
Aucun utilisateur

-50%
Le deal à ne pas rater :
-50% sur les sacs à dos pour ordinateur portable Urban Factory ...
19.99 € 39.99 €
Voir le deal

Boucle for pour chercher le maximum dans une colonne

3 participants

Aller en bas

Boucle for pour chercher le maximum dans une colonne Empty Boucle for pour chercher le maximum dans une colonne

Message par khaoula gammoudi Dim 2 Avr 2017 - 13:43

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:
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
J'ai pas compris l'erreur sortis par R.
Pourriez-vous m'aidez?
Merci.

khaoula gammoudi

Nombre de messages : 8
Date d'inscription : 03/02/2013

Revenir en haut Aller en bas

Boucle for pour chercher le maximum dans une colonne Empty Re: Boucle for pour chercher le maximum dans une colonne

Message par Eric Wajnberg Dim 2 Avr 2017 - 14:38

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.
Eric Wajnberg
Eric Wajnberg

Nombre de messages : 1237
Date d'inscription : 14/09/2012

Revenir en haut Aller en bas

Boucle for pour chercher le maximum dans une colonne Empty Re: Boucle for pour chercher le maximum dans une colonne

Message par droopy Lun 3 Avr 2017 - 7:18

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 :
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]
Cdlt
droopy
droopy

Nombre de messages : 1156
Date d'inscription : 04/09/2009

Revenir en haut Aller en bas

Boucle for pour chercher le maximum dans une colonne Empty Re: Boucle for pour chercher le maximum dans une colonne

Message par Eric Wajnberg Lun 3 Avr 2017 - 9:14

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.
Eric Wajnberg
Eric Wajnberg

Nombre de messages : 1237
Date d'inscription : 14/09/2012

Revenir en haut Aller en bas

Boucle for pour chercher le maximum dans une colonne Empty Re: Boucle for pour chercher le maximum dans une colonne

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum