Como corrigir em r: o argumento tem comprimento zero


Uma mensagem de erro que você pode encontrar ao usar R é:

 Error in if (x < 10) {: argument is of length zero

Este erro geralmente ocorre quando você tenta realizar uma comparação lógica em uma instrução if em R, mas a variável que você está usando na comparação tem comprimento zero.

Dois exemplos de variáveis de comprimento zero são numeric() ou Character(0) .

O exemplo a seguir mostra como resolver esse erro na prática.

Como reproduzir o erro

Suponha que criemos a seguinte variável numérica em R com comprimento zero:

 #create numeric variable with length of zero
x <- numeric()

Agora suponha que tentamos usar esta variável em uma instrução if:

 #if x is less than 10, print x to console
if(x < 10 ) {
  x
}

Error in if (x < 10) {: argument is of length zero

Recebemos um erro porque a variável que definimos tem comprimento zero.

Se simplesmente criássemos uma variável numérica com um valor real, nunca receberíamos este erro ao usar a instrução if:

 #create numeric variable
y <- 5

#if y is less than 10, print y to console
if(y < 10 ) {
  y
}

[1] 5

Como evitar o erro

Para evitar o erro de comprimento zero do argumento , precisamos incluir uma função isTRUE , que usa a seguinte lógica:

 is. logical (x) && length(x) == 1 && !is. na (x) && x

Se usarmos esta função na instrução if, não receberemos erro ao comparar nossa variável com um valor:

 if(isTRUE(x) && x < 10 ) {
  x
}

Em vez de receber um erro, simplesmente não recebemos nenhuma saída porque a função isTRUE(x) é avaliada como FALSE , o que significa que o valor de x nunca é impresso.

Recursos adicionais

Os tutoriais a seguir explicam como corrigir outros erros comuns no R:

Como consertar em R: argumentos envolvem diferentes números de linhas
Como corrigir em R: erro na seleção de argumentos não utilizados
Como reparar em R: a substituição tem comprimento zero

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *