Saltar al contenido

R – el argumento es de longitud cero en la instrucción if

Posteriormente a indagar en diversos repositorios y sitios al terminar hemos dado con la respuesta que te enseñaremos a continuación.

Solución:

“el argumento es de longitud cero” es un problema muy específico que proviene de uno de mis elementos menos queridos de R. Permítanme demostrar el problema:

> FALSE == "turnip"
[1] FALSE
> TRUE == "turnip"
[1] FALSE
> NA == "turnip"
[1] NA
> NULL == "turnip"
logical(0)

Como puede ver, las comparaciones con NULL no solo no producen un valor booleano, sino que no producen ningún valor, y los flujos de control tienden a esperar que se produzca una verificación. alguno tipo de salida. Cuando producen una salida de longitud cero… “el argumento es de longitud cero”.

(Tengo una perorata muy larga sobre por qué esto me enfurece tanto. Puede esperar).

Entonces, mi pregunta; ¿Cuál es la salida de sum(is.null(data[[k]]))? Si no es 0, tiene valores NULL incrustados en su conjunto de datos y deberá eliminar las filas relevantes o cambiar la marca a

if(!is.null(data[[k]][[k2]]) & temp > data[[k]][[k2]])
    #do stuff

Esperemos que eso ayude; es difícil saberlo sin el conjunto de datos completo. Si no ayuda, y el problema no es que un valor NULL ingrese en algún lugar, me temo que no tengo idea.

El mismo mensaje de error resulta no sólo para null pero también por ej. factor(0). En este caso, la consulta debe ser if(length(element) > 0 & otherCondition) o mejor comprobar ambos casos con if(!is.null(element) & length(element) > 0 & otherCondition).

Puedes usar isTRUE para tales casos. isTRUE es lo mismo que is.logical(x) && length(x) == 1 && !is.na(x) && x

Si usas brillo allí, podrías usar isTruthy que cubre los siguientes casos:

  • FALSO

  • NULO

  • “”

  • Un vector atómico vacío

  • Un vector atómico que contiene solo valores faltantes

  • Un vector lógico que contiene todos los valores FALSO o faltantes

  • Un objeto de clase “intento-error”

  • Un valor que representa un actionButton() sin hacer clic

Valoraciones y comentarios

Te invitamos a añadir valor a nuestro contenido contribuyendo tu veteranía en las acotaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *