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.