2 votes

Comment inclure une variable dans un vecteur dans R ?

Dans une boucle, je veux insérer "i" dans un vecteur. Comment faire ?

J'ai essayé le code suivant :

m1nash.best.response.coordinates<- NULL
for (i in 1:2) {
  if(m1nash[1,i]>m1nash[2,i]) {
    m1nash.best.response.coordinates <- c(m1nash.best.response.coordinates, 1,i)
  } if(m1nash[2,i]>m1nash[1,i]) {
    m1nash.best.response.coordinates <- c(m1nash.best.response.coordinates, 2, i)
  }

}

Je suis tombé sur la console suivante :

Error: unexpected 'if' in:
"    m1nash.best.response.coordinates <- c(m1nash.best.response.coordinates, 1,i)
  } if"
>     m1nash.best.response.coordinates <- c(m1nash.best.response.coordinates, 2, i)
Error: object 'i' not found
>   }
Error: unexpected '}' in "  }"
>   
> }
Error: unexpected '}' in "}"

0voto

Essayez ceci :

m1nash.best.response.coordinates<- NULL
for (i in 1:2) {
  if (m1nash[1,i]>m1nash[2,i]) {
    m1nash.best.response.coordinates <- c(m1nash.best.response.coordinates, 1,i)
  } 
  if (m1nash[2,i]>m1nash[1,i]) {
    m1nash.best.response.coordinates <- c(m1nash.best.response.coordinates, 2, i)
  }

}

0voto

Robele Baker Points 91

Bienvenue Kaan,

Il y a quelques choix à faire en matière de bonnes pratiques, notamment celui de savoir si les for ou if sont les meilleurs choix.

Cependant, si tout ce qui vous préoccupe est de faire fonctionner votre code. Il y a plusieurs choses que vous pouvez faire.

Je préférerais initialiser m1nash.best.response.coordinates comme un vecteur vide au lieu de NULL . Pour ce faire, il suffit de lui attribuer la mention c()

Deuxièmement, je crois qu'il y a une faute d'orthographe sur cette ligne if(m1nash[2,i]>m1nas[1,i]) . m1nas devrait être m1nash .

Vous pouvez essayer cette boucle ci-dessous

m1nash.best.response.coordinates <- c()
m1nash <- matrix(data = rnorm(4), nrow=2, ncol=2) #my test matrix

for (i in 1:2) {
  if (m1nash[1, i] > m1nash[2, i]) {
    m1nash.best.response.coordinates <-
      c(m1nash.best.response.coordinates, 1, i)
  }
  if (m1nash[2, i] > m1nash[1, i]) {
    m1nash.best.response.coordinates <-
      c(m1nash.best.response.coordinates, 2, i)
  }

}

Vous ne répondez pas à la condition si m1nash[1,i]= m1nash[2,i] . Si cela n'est pas possible, vous pouvez même utiliser la fonction ifelse si vous souhaitez conserver la fonction if famille.

Bonne chance

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X