Gemma Ruiz-Olalla
2019-Jan-25 14:05 UTC
[R-es] Error "valor ausente TRUE/FALSE..." en doble loop FOR
Hola Carlos, Gracias por la respuesta. phen_tot es un data frame visualizado como tibble, y contiene (entre otras) las columnas "convergence", "r_square" y "maxlog10mfi". Y queremos crear nuevas columnas, como "use", "convergence_cor", etc. phen_tot$convergence debería ser un factor de si el modelo converge o no (levels: 1 y 2), pero tibble lo tiene como "double". Pensamos que de ahí podía venir el error e intentamos cambiarlo a factor con "factor()" y con "as.factor()", pero nada funcionó. Creemos que no funcionó porque todos los valores que tenemos son 1, y no tenemos ningún 2, así que no lo detecta como nivel del factor. ¿Puede ser? Muchas gracias, Gemma El vie., 25 ene. 2019 a las 14:07, Carlos J. Gil Bellosta (< gilbellosta en gmail.com>) escribió:> Hola, qué tal? Habría que ver qué contiene el objeto phen_tot, pero la > expresión > phen_tot$convergence[i][j] > es muy sospechosa. Qué estructura tiene phen_tot$convergence? > > Un saludo, > > Carlos J. Gil Bellosta > > > El vie., 25 ene. 2019 13:32, Gemma Ruiz-Olalla <gemma.ruizolalla en gmail.com> > escribió: > >> Buenas tardes, >> >> Estamos intentando hacer esta función, y sabemos que el bucle funciona (lo >> hemos testeado). Pero nos da este error ya en la primera línea: >> >> "Error in if (phen_tot$convergence[i][j] == '2' || phen_tot$r_square[i][j] >> <= : valor ausente donde TRUE/FALSE es necesario" >> >> Hemos evitado usar Tidyverse expresamente por la complejidad de la toma de >> decisiones del árbol; por eso queremos mantener los bucles "for". >> >> ¿Alguien nos puede echar una mano para ver qué falla? >> >> >> for(i in l_plates) { >> for(j in l_analytes) { >> >> # arguments >> if(phen_tot$convergence[i][j] == '2' || phen_tot$r_square[i][j] <>> 0.9) { >> >> # first condition >> phen_tot$convergence_cor <- 'F' >> phen_tot$use <- 'F' >> phen_tot$ref_val <- 15000 >> >> # second condition >> }else {phen_tot$convergence_cor[i][j] <- 'T' >> if(phen_tot$max_log10mfi[i][j] < log10(15000)){ >> phen_tot$use[i][j] <- 'F' >> phen_tot$ref_val[i][j] <- 15000 >> >> # third condition >> }else {phen_tot$use[i][j] <- 'T' >> phen_tot$ref_val[i][j] <- phen_tot$pred_log10mfi[i][j] >> } >> } >> } >> } >> >> >> Muchas gracias, >> >> -- >> Gemma >> >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> >[[alternative HTML version deleted]]
Xavier-Andoni Tibau Alberdi
2019-Jan-25 14:23 UTC
[R-es] Error "valor ausente TRUE/FALSE..." en doble loop FOR
Buenas, puedes imprimir phen_tot$convergence[i][j], con diversas i i j, para ver que te devuelve. también puedes usar type(phen_tot$convergence[i][j]) para ver que tipo es. Entonces sabrás que tienes que poner en el oro lado del if. Un saludo! Xavier Tibau Missatge de Gemma Ruiz-Olalla <gemma.ruizolalla en gmail.com> del dia dv., 25 de gen. 2019 a les 15:06:> Hola Carlos, > > Gracias por la respuesta. phen_tot es un data frame visualizado como > tibble, y contiene (entre otras) las columnas "convergence", "r_square" y > "maxlog10mfi". Y queremos crear nuevas columnas, como "use", > "convergence_cor", etc. > > phen_tot$convergence debería ser un factor de si el modelo converge o no > (levels: 1 y 2), pero tibble lo tiene como "double". Pensamos que de ahí > podía venir el error e intentamos cambiarlo a factor con "factor()" y con > "as.factor()", pero nada funcionó. Creemos que no funcionó porque todos los > valores que tenemos son 1, y no tenemos ningún 2, así que no lo detecta > como nivel del factor. ¿Puede ser? > > Muchas gracias, > > Gemma > > > El vie., 25 ene. 2019 a las 14:07, Carlos J. Gil Bellosta (< > gilbellosta en gmail.com>) escribió: > > > Hola, qué tal? Habría que ver qué contiene el objeto phen_tot, pero la > > expresión > > phen_tot$convergence[i][j] > > es muy sospechosa. Qué estructura tiene phen_tot$convergence? > > > > Un saludo, > > > > Carlos J. Gil Bellosta > > > > > > El vie., 25 ene. 2019 13:32, Gemma Ruiz-Olalla < > gemma.ruizolalla en gmail.com> > > escribió: > > > >> Buenas tardes, > >> > >> Estamos intentando hacer esta función, y sabemos que el bucle funciona > (lo > >> hemos testeado). Pero nos da este error ya en la primera línea: > >> > >> "Error in if (phen_tot$convergence[i][j] == '2' || > phen_tot$r_square[i][j] > >> <= : valor ausente donde TRUE/FALSE es necesario" > >> > >> Hemos evitado usar Tidyverse expresamente por la complejidad de la toma > de > >> decisiones del árbol; por eso queremos mantener los bucles "for". > >> > >> ¿Alguien nos puede echar una mano para ver qué falla? > >> > >> > >> for(i in l_plates) { > >> for(j in l_analytes) { > >> > >> # arguments > >> if(phen_tot$convergence[i][j] == '2' || phen_tot$r_square[i][j] <> >> 0.9) { > >> > >> # first condition > >> phen_tot$convergence_cor <- 'F' > >> phen_tot$use <- 'F' > >> phen_tot$ref_val <- 15000 > >> > >> # second condition > >> }else {phen_tot$convergence_cor[i][j] <- 'T' > >> if(phen_tot$max_log10mfi[i][j] < log10(15000)){ > >> phen_tot$use[i][j] <- 'F' > >> phen_tot$ref_val[i][j] <- 15000 > >> > >> # third condition > >> }else {phen_tot$use[i][j] <- 'T' > >> phen_tot$ref_val[i][j] <- phen_tot$pred_log10mfi[i][j] > >> } > >> } > >> } > >> } > >> > >> > >> Muchas gracias, > >> > >> -- > >> Gemma > >> > >> [[alternative HTML version deleted]] > >> > >> _______________________________________________ > >> R-help-es mailing list > >> R-help-es en r-project.org > >> https://stat.ethz.ch/mailman/listinfo/r-help-es > >> > > > > [[alternative HTML version deleted]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es >[[alternative HTML version deleted]]
Carlos J. Gil Bellosta
2019-Jan-25 14:53 UTC
[R-es] Error "valor ausente TRUE/FALSE..." en doble loop FOR
Hola, ¿qué tal? Si phen_tot es un DF, entonces no existe phen_tot$convergence[i][j]. A lo más, existe phen_tot$convergence[i], que es el i-ésimo elemento de la columna "convergence" de phen_tot. A saber cuál es la lógica que quieres implementar ahí. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El vie., 25 ene. 2019 a las 15:24, Xavier-Andoni Tibau Alberdi (< xavitibau en gmail.com>) escribió:> Buenas, > > puedes imprimir phen_tot$convergence[i][j], con diversas i i j, para ver > que te devuelve. también puedes usar type(phen_tot$convergence[i][j]) para > ver que tipo es. Entonces sabrás que tienes que poner en el oro lado del > if. > > Un saludo! > > Xavier Tibau > > Missatge de Gemma Ruiz-Olalla <gemma.ruizolalla en gmail.com> del dia dv., > 25 de gen. 2019 a les 15:06: > >> Hola Carlos, >> >> Gracias por la respuesta. phen_tot es un data frame visualizado como >> tibble, y contiene (entre otras) las columnas "convergence", "r_square" y >> "maxlog10mfi". Y queremos crear nuevas columnas, como "use", >> "convergence_cor", etc. >> >> phen_tot$convergence debería ser un factor de si el modelo converge o no >> (levels: 1 y 2), pero tibble lo tiene como "double". Pensamos que de ahí >> podía venir el error e intentamos cambiarlo a factor con "factor()" y con >> "as.factor()", pero nada funcionó. Creemos que no funcionó porque todos >> los >> valores que tenemos son 1, y no tenemos ningún 2, así que no lo detecta >> como nivel del factor. ¿Puede ser? >> >> Muchas gracias, >> >> Gemma >> >> >> El vie., 25 ene. 2019 a las 14:07, Carlos J. Gil Bellosta (< >> gilbellosta en gmail.com>) escribió: >> >> > Hola, qué tal? Habría que ver qué contiene el objeto phen_tot, pero la >> > expresión >> > phen_tot$convergence[i][j] >> > es muy sospechosa. Qué estructura tiene phen_tot$convergence? >> > >> > Un saludo, >> > >> > Carlos J. Gil Bellosta >> > >> > >> > El vie., 25 ene. 2019 13:32, Gemma Ruiz-Olalla < >> gemma.ruizolalla en gmail.com> >> > escribió: >> > >> >> Buenas tardes, >> >> >> >> Estamos intentando hacer esta función, y sabemos que el bucle funciona >> (lo >> >> hemos testeado). Pero nos da este error ya en la primera línea: >> >> >> >> "Error in if (phen_tot$convergence[i][j] == '2' || >> phen_tot$r_square[i][j] >> >> <= : valor ausente donde TRUE/FALSE es necesario" >> >> >> >> Hemos evitado usar Tidyverse expresamente por la complejidad de la >> toma de >> >> decisiones del árbol; por eso queremos mantener los bucles "for". >> >> >> >> ¿Alguien nos puede echar una mano para ver qué falla? >> >> >> >> >> >> for(i in l_plates) { >> >> for(j in l_analytes) { >> >> >> >> # arguments >> >> if(phen_tot$convergence[i][j] == '2' || phen_tot$r_square[i][j] >> <>> >> 0.9) { >> >> >> >> # first condition >> >> phen_tot$convergence_cor <- 'F' >> >> phen_tot$use <- 'F' >> >> phen_tot$ref_val <- 15000 >> >> >> >> # second condition >> >> }else {phen_tot$convergence_cor[i][j] <- 'T' >> >> if(phen_tot$max_log10mfi[i][j] < log10(15000)){ >> >> phen_tot$use[i][j] <- 'F' >> >> phen_tot$ref_val[i][j] <- 15000 >> >> >> >> # third condition >> >> }else {phen_tot$use[i][j] <- 'T' >> >> phen_tot$ref_val[i][j] <- phen_tot$pred_log10mfi[i][j] >> >> } >> >> } >> >> } >> >> } >> >> >> >> >> >> Muchas gracias, >> >> >> >> -- >> >> Gemma >> >> >> >> [[alternative HTML version deleted]] >> >> >> >> _______________________________________________ >> >> R-help-es mailing list >> >> R-help-es en r-project.org >> >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> >> >> > >> >> [[alternative HTML version deleted]] >> >> _______________________________________________ >> R-help-es mailing list >> R-help-es en r-project.org >> https://stat.ethz.ch/mailman/listinfo/r-help-es >> >-- Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com [[alternative HTML version deleted]]