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