Foro de debate

Encontrar la posición de una variable en un vector

Encontrar la posición de una variable en un vector

de Aida LCobos -
Número de respuestas: 4

Hola, soy algo nueva en programación en R y llevo varios días partiéndome la cabeza intentando hacer un programa que me de la posición de un número en un vector.

Tengo un vector x con una serie de 1000 números aleatorios con una media determinada y necesito recorrerlo hasta encontrar el primer número mayor a una determinada cantidad para después imprimir la posición i que ocupa en el vector.


Lo ilustro con un ejemplo:

n<-5
mean<-5
x<-rnorm(n, mean)

Así el vector x sería:

x<-(5.44, 5.77, 6.99, 5.73, 5.30)


Lo que necesito es recorrer este vector hasta encontrar un número mayor o igual a 6 y dar la posición que ocupa en el vector.

Comienzo definiendo un nuevo vector 'pos' que será el que usaré para mostrar la posición, y un while para recorrer el vector:

pos<-0
while (x[i]<=6) {
    pos<-i
    i=i+1
}

cat("el primer valor mayor a 6 ocupa la posicion", pos)

> El primer valor mayor a 6 ocupa la posición 3


Sé que está mal (por eso no me sale lo que necesito) pero he intentado diferentes cosas y no logro que me de la posición.

No necesito máximos ni mínimos, sólo encontrar el primer valor que no cumpla la condición, salir del bucle y mostrar la posición.



En respuesta a Aida LCobos

Re: Encontrar la posición de una variable en un vector

de Manuel Muñoz Márquez -

Buenas:

Esta es una solución:

> x<-c(5.44, 5.77, 6.99, 5.73, 5.30)
> min(which(x >= 6))
[1] 3

Un saludo

En respuesta a Manuel Muñoz Márquez

Re: Encontrar la posición de una variable en un vector

de Aida LCobos -
¡Muchas gracias!

Ahora otra pregunta, ¿habría alguna forma de hacerlo con un bucle while?


Que el while recorra todo el vector y pare al encontrar el primer valor, salir del bucle y dar la posición.

Había intentado con la función (mal hecha) que propuse al inicio, pero tardaba muchisimo tiempo (lo deje hasta 1 hora) y al final tenía que pararla manualmente, con alguna otra opción terminó solo pero no funcionaba como quiero.


Sé que es mucho lío con un bucle, pero es creo que entenderlo de la forma complicada ayuda a después usar mejor las funciones hechas para facilitarnos la vida.

En respuesta a Aida LCobos

Re: Encontrar la posición de una variable en un vector

de Aida LCobos -
Lo he conseguido!


con i<-1 y sumando ahí las posiciones hasta que deje de cumplirse la condición del while

En respuesta a Aida LCobos

Re: Encontrar la posición de una variable en un vector

de Manuel Muñoz Márquez -

Buenas:

Cada lenguaje tiene sus propias particularidades. En el caso de R los bucles se ejecutan muy lentamente. Por tanto, la otra opción es más rápida y "más complicada". Pues lo complicado es ajustarse a las características del lenguaje en uso y no programar en R como si se estuviese programando en C.

Un saludo.