Skip to content

[R-es] Perdido en un bucle

2 messages · Juan Abasolo, JCMld

#
Buenas, compañeros.
Se que debería tener que entenderlo, pero no lo hago y me aprieta la fecha
de entrega:
Tengo un bucle para asignar una columna de significacion a unos resultados,
el bucle lo intento guardar en un vector para agregar el vector luego a una
matriz, en pantalla me imprime el resultado, pero en el vector solo me
queda el último valor.

x.b = c(0.000, 0.000, 0.001, 0.374, 0.026, 1.000)

x.c <-x.b            #Para que quede equivalente

for (cu in x.b){
    valor <- ifelse(cu<=0.001,paste("***"),
                 ifelse(cu<=0.01, paste("**"),
                        ifelse(cu<0.05, paste("*"),
                               paste(""))))
    print(valor)
    x.c[cu] <- valor
}

En pantalla:

[1] "***"
[1] "***"
[1] "***"
[1] ""
[1] "*"
[1] ""


pero
Gracias por la dedicación y disculpar la molestia
#
Hola Juan,

Seguramente tienes problemas al usar cu como si fuera un índice. De todas
formas, si lo entiendo bien, no necesitas un bucle para hacer esto. R
funciona vectorialmente, así que puedes hacer directamente el cálculo sobre
todo el vector:

x.c<- ifelse(x.b<=0.001,paste("***"),
              ifelse(x.b<=0.01, paste("**"),
                     ifelse(x.b<0.05, paste("*"),
                            paste(""))))
[1] "***" "***" "***" ""    "*"   ""


Saludos,
Joan

-----Mensaje original-----
De: R-help-es [mailto:r-help-es-bounces en r-project.org] En nombre de Juan
Abasolo
Enviado el: viernes, 7 de abril de 2017 19:21
Para: r-help-es
Asunto: [R-es] Perdido en un bucle

Buenas, compañeros.
Se que debería tener que entenderlo, pero no lo hago y me aprieta la fecha
de entrega:
Tengo un bucle para asignar una columna de significacion a unos resultados,
el bucle lo intento guardar en un vector para agregar el vector luego a una
matriz, en pantalla me imprime el resultado, pero en el vector solo me queda
el último valor.

x.b = c(0.000, 0.000, 0.001, 0.374, 0.026, 1.000)

x.c <-x.b            #Para que quede equivalente

for (cu in x.b){
    valor <- ifelse(cu<=0.001,paste("***"),
                 ifelse(cu<=0.01, paste("**"),
                        ifelse(cu<0.05, paste("*"),
                               paste(""))))
    print(valor)
    x.c[cu] <- valor
}

En pantalla:

[1] "***"
[1] "***"
[1] "***"
[1] ""
[1] "*"
[1] ""


pero
Gracias por la dedicación y disculpar la molestia


_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es