2011-08-23 24 views

Respuesta

11

sum(Var >= 1000) lo hará, siempre y cuando Var sea un vector. De lo contrario, deberá indicarle a R que busque Var dentro de cualquier objeto que lo contenga. He aquí un ejemplo:

> set.seed(2) 
> Var <- sample(900:1100, 10) 
> Var 
[1] 937 1040 1014 933 1085 1084 925 1061 990 1005 
> Var >= 1000 
[1] FALSE TRUE TRUE FALSE TRUE TRUE FALSE TRUE FALSE TRUE 
> sum(Var >= 1000) 
[1] 6 

Esto utiliza el hecho de que TRUE = 1 y FALSE = 0.

+1

Como nota al margen, si desea hacer esto para "Var == 1000", sea asegúrese de leer sobre la diferencia entre "==" y "all.equal" –

10
sum(Var>=1000) 

Le sugiero que lea algunos de los documentos de introducción R, este tipo de cosas surge todo el tiempo. Además, lo que tienes no es una 'lista' sino un 'vector'. Si es una 'lista', entonces ... ummm, unlist() primero.

+0

Creo que quisiste decir '> =' no solo '>' –

+0

ordenado. mi error ... – Spacedman

+0

@Spacedman: Gracias por el consejo, estoy jugando con su script de simulación MC. Lo que quiero es contar la cantidad de veces que ocurrió la superposición observada en su variable sim y luego dividirla por el número de ciclos. Esto dará una fracción que creo que se puede usar como un valor p empírico. Alguna sugerencia ????? – Angelo

4

Prueba esto:

sum(r >= 1000) 

donde r es un vector. Esto funciona porque R convierte automáticamente los booleanos TRUE/FALSE a los valores 1 y 0 cuando intentas sumar un vector booleano.

3

quizás no tan eficiente, pero me gusta

> length(which(Var>=1000)) 
0

También es posible utilizar:

vec <- sample(1:10, 15, replace = TRUE) 
table(vec > 2) 

o

length(vec[vec>2]) 
Cuestiones relacionadas