2010-09-29 16 views
25

En R, si prueba una condición en un vector en lugar de un escalar, devolverá un vector que contiene el resultado de la comparación para cada valor en el vector. Por ejemplo ...Contar el número de valores de vector en el rango con R

> v <- c(1,2,3,4,5) 
> v > 2 
[1] FALSE FALSE TRUE TRUE TRUE 

De esta manera, puedo determinar el número de elementos en un vector que están por encima o por debajo de un cierto número, como tal.

> sum(v > 2) 
[1] 3 
> sum(v < 2) 
[1] 1 

¿Alguien sabe cómo puedo determinar el número de valores en un rango determinado? Por ejemplo, ¿cómo determinaría el número de valores mayor que 2 pero menor que 5?

Respuesta

35

Trate

> sum(v > 2 & v < 5) 
+0

Eso fue tan fácil que me avergüenzo. Lo primero que intenté fue algo así, excepto que usé && como operador lógico y en lugar de &. Estoy tan acostumbrado a usarlo en otros idiomas. ¿Cuál es la diferencia entre '&' y '&&' en R? –

+3

&& se usa para vectores de longitud 1. & funciona en cada elemento de un vector. – stevendesu

+2

R-intro, ch. 9.2.1 – aL3xa

0

Uso cuales:

set.seed(1) 
x <- sample(10, 50, replace = TRUE) 
length(which(x > 3 & x < 5)) 
# [1] 6 
4

Hay también los% <% y% < =% operadores de comparación en el paquete TeachingDemos que le permiten hacer esto como:

sum(2 %<% x %<% 5) 
sum(2 %<=% x %<=% 5) 

que da los mismos resultados que:

sum(2 < x & x < 5) 
sum(2 <= x & x <= 5) 

Cuál es mejor es probablemente más una cuestión de preferencia personal.

+0

Eso es definitivamente útil. Intenté algo así, pero obtuve errores de sintaxis. Así es como escribiría en papel o LaTeX, así que es bueno saberlo. Por cierto, supongo que querías decir x% <=% 5 y no x% <= 5%. –

+0

Gracias por coger el% que intentó alejarse flotando, lo arreglé ahora. –

Cuestiones relacionadas