Les posteurs les plus actifs de la semaine
niaboc
 
Eric Wajnberg
 
lenny868
 
RapidosFlash
 
Nik
 
Florent Aubry
 
zouzou
 
c@ssoulet
 


Boucle for pour chercher le maximum dans une colonne

Aller en bas

Boucle for pour chercher le maximum dans une colonne

Message par khaoula gammoudi le 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

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Boucle for pour chercher le maximum dans une colonne

Message par Eric Wajnberg le 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.
avatar
Eric Wajnberg

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

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Boucle for pour chercher le maximum dans une colonne

Message par droopy le 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
avatar
droopy

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

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Boucle for pour chercher le maximum dans une colonne

Message par Eric Wajnberg le 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.
avatar
Eric Wajnberg

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

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

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