while variable usar nombre loop for ejemplos crear contador como codigo r r-faq

variable - Error en si/while(condición){: el argumento es de longitud cero



nombre a variable en un loop en r (3)

Recibi el error

Error in if (condition) { : argument is of length zero

o

Error in while (condition) { : argument is of length zero

¿Qué causa este mensaje de error y qué significa?

En una inspección adicional parece que el valor es NULL .

condition ## NULL

Para lidiar con este error, ¿cómo pruebo los valores NULL?

Esperaba que esto volviera TRUE , pero obtuve un valor lógico vacío:

condition == NULL ## logical(0)


Al probar los valores NULL, desea utilizar is.null(hic.data[[z]]) .


?NULL Ves ?NULL

Tienes que usar is.null

''is.null'' devuelve ''TRUE'' si su argumento es ''NULL'' y ''FALSE'' de lo contrario.

Prueba esto:

if ( is.null(hic.data[[z]]) ) { print("is null")}

De la sección 2.1.6 de la definición del lenguaje R

Hay un objeto especial llamado NULL. Se utiliza cuando es necesario indicar o especificar que un objeto está ausente. No debe confundirse con un vector o lista de longitud cero. El objeto NULL no tiene tipo ni propiedades modificables. Solo hay un objeto NULL en R, al que se refieren todas las instancias. Para probar el uso nulo es.null. No puede establecer atributos en NULL.


¿Qué causa este mensaje de error y qué significa?

if declaraciones toman un solo valor lógico (técnicamente un vector lógico de longitud uno) como entrada para la condición.

El error se produce cuando la condición de entrada es de longitud cero. Puedes reproducirlo con, por ejemplo:

if (logical()) {} ## Error: argument is of length zero if (NULL) {} ## Error: argument is of length zero

Errores comunes que conducen a este error.

Es fácil causar accidentalmente este error al usar $ indexación. Por ejemplo:

l <- list(a = TRUE, b = FALSE, c = NA) if(l$d) {} ## Error in if (l$d) { : argument is of length zero

También se usa if , if else si te ifelse , o sobrepasar T y F

Tenga en cuenta estos errores y advertencias relacionados con otras malas condiciones:

Error en if / while (condición) {: falta el valor donde se necesita VERDADERO / FALSO

Error en if / while (condición): el argumento no se puede interpretar como lógico

if (NA) {} ## Error: missing value where TRUE/FALSE needed if ("not logical") {} ## Error: argument is not interpretable as logical if (c(TRUE, FALSE)) {} ## Warning message: ## the condition has length > 1 and only the first element will be used

¿Cómo pruebo estos valores?

NULL valores NULL se pueden probar utilizando is.null . Vea la respuesta de GSee para más detalles.

Para hacer sus llamadas if seguro, un buen patrón de código es:

if(!is.null(condition) && length(condition) == 1 && !is.na(condition) && condition) { # do something }

También es posible que desee ver assert_is_if_condition de assertive.code .