Gemma Ruiz-Olalla
2019-Jan-25 12:31 UTC
[R-es] Error "valor ausente TRUE/FALSE..." en doble loop FOR
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]]
Carlos J. Gil Bellosta
2019-Jan-25 13:07 UTC
[R-es] Error "valor ausente TRUE/FALSE..." en doble loop FOR
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]]
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]]