En R, supongamos que tenemos un vector
area = c(rep(c(26:30), 5), rep(c(500:504), 5), rep(c(550:554), 5), rep(c(76:80), 5))
y otro vector yield = c(1:100)
.
Ahora, decir que quiero índice de este modo:En R: vectores de indexación por comparación booleano de un valor en el rango: Índice == C (min: max)
> yield[area==27]
[1] 2 7 12 17 22
> yield[area==501]
[1] 27 32 37 42 47
No hay problema, ¿verdad? Pero cosas extrañas comienzan a suceder cuando trato de indexar usando c(A, B)
. (Y aún más extraño cuando intento c(min:max)
...)
> yield[area==c(27,501)]
[1] 7 17 32 42
Lo que estoy esperando es, por supuesto, las instancias que están presentes en ambos de los otros ejemplos, no sólo algunos extraña combinación de ellos. Esto funciona cuando puedo usar el operador OR de tubería:
> yield[area==27 | area==501]
[1] 2 7 12 17 22 27 32 37 42 47
¿Pero y si estoy trabajando con un rango? Digamos que quiero indexarlo por el rango c(27:503)
? En mi ejemplo real hay muchos más puntos de datos y rangos, por lo que tiene más sentido, por favor, no sugieren lo hago con la mano, lo que esencialmente significa:
yield[area==27 | area==28 | area==29 | ... | area==303 | ... | area==500 | area==501]
Tiene que haber una mejor manera. ..
Impresionante, gracias :) Además, ¿dónde está esto documentado? ¿Cómo se supone que debo encontrarlo sin preguntar? ¿De qué le pido ayuda? La ayuda inútil que yo llamo: P – gakera
@gakera: está en '? Match'. Se supone que debes encontrarlo adivinando mejores palabras clave o leyendo el manual de referencia completo. :-P Creo que primero encontré 'match' a través de la sección" Ver también "de'? Grep'. –
Jaja, adivinando mejores palabras clave o leyendo el manual completo, ¡me encanta! R es tan fácil de usar: D Gracias de nuevo. – gakera