Foro de debate

sobre la función which()

Re: sobre la función which()

by Manuel Muñoz Márquez -
Number of replies: 0
Buenas:

Una tendencia natural cuando uno se inicia en un lenguaje de programación es hacer las cosas igual que en los lenguajes que uno conoce, esto habitualmente conlleva un subaprovechamiento de las posibilidades del lenguaje, en este caso R.

Una solución a tu problema podría consistir en usar una variable auxiliar para reordenar simultáneamente las ordenadas y las abscisas:

# Generación de datos aleatorios
y <- runif(10)

# Obtención del vector de posiciones ordenadas
indice <- sort(y, index.return=TRUE)$ix

# Reordenación de las variables
x <- 1:10
nx <- x[indice]
ny <- y[indice]

# Filtrar las que verifican la condición
xx <- nx[ny>.5]
yy <- ny[ny>.5]

# Hacer las gráficas
plot(x, y)
points(xx, yy, col='blue')


Una solución distinta, que creo que hace lo que quieres, mucho más eficiente usando R es:
y <- runif(10)
indice <- sort(y, index.return=TRUE)$ix
x <- 1:10
nx <- x[indice]
ny <- y[indice]

mycol <- rep('black', 10)
mycol[ny>.5] <- 'blue'
plot(nx, ny, col=mycol)

En esta solución se trabaja sobre el vector de colores.

Saludos.