Foro de debate

AYUDA CON PROGRAMA

AYUDA CON PROGRAMA

de Hugo Alberto Ruiz Cancino -
Número de respuestas: 1

Hola buenas tardes, mi problema es el siguiente, tengo este codigo

##Media de alfa
> limit=10000000
> for(i in 1:n)
+ {
+ if(alfa.m[i]>limit)alfa.m=alfa.m[-i]
+ }

Error en if (alfa.m[i] > limit) alfa.m = alfa.m[-i] :
valor ausente donde TRUE/FALSE es necesario

Y estoy usando ese codigo para eliminar unos valores de infinito que me salen, pero no se porque me sale el error en if. Alguien podria ayudarme. Gracias

En respuesta a Hugo Alberto Ruiz Cancino

Re: AYUDA CON PROGRAMA

de Manuel Muñoz Márquez -

Buenas Hugo:

Tu código reduce la longitud del vector alfa.m cada vez que se encuentra un valor mayor que limit, eso hace que el bucle intente ir más allá del último elemento de alfa.m

En R es preferible no usar bucles te propongo dos alternativas:

limit = 100

alfa.m = c(10, 10000, 20, 30, 20)

alfa.m[alfa.m <= limit]

[1] 10 20 30 20

Esta opción suprime del vector los elementos que no verifican la condición.

alfa.m[alfa.m > limit] = NA

alfa.m

[1] 10 NA 20 30 20

Esta segunda opción reemplaza los elementos superiores a limit por NA, que representa un valor ausente.

Saludos.