Como corrigir em r: a condição tem comprimento > 1 e apenas o primeiro elemento será usado


Um erro que você pode encontrar no R é:

 Warning message:
In if (x > 1) {:
  the condition has length > 1 and only the first element will be used 

Este erro ocorre quando você tenta usar uma função if() para verificar uma condição, mas passa um vetor para a função if() em vez de elementos individuais.

Este tutorial explica exatamente como corrigir esse erro.

Como reproduzir o erro

Suponha que temos o seguinte vetor em R:

 #define data
x <- c(2, 3, 1, 1, 5, 7)

Agora suponha que tentamos usar uma função if() para verificar se cada valor do vetor x é maior que 1, então multiplique esses valores por 2:

 #if value in vector x is greater than 1, multiply it by 2
if (x>1) {
  x*2
}

Warning message:
In if (x > 1) {:
  the condition has length > 1 and only the first element will be used

Recebemos uma mensagem de aviso porque passamos um vetor para a instrução if() .

Uma instrução if() só pode verificar um elemento de um vetor por vez, mas usando este código tentamos verificar cada elemento do vetor por vez.

Como corrigir o erro

A maneira mais fácil de corrigir esse erro é usar uma função ifelse() :

 #if value in vector x is greater than 1, multiply it by 2
ifelse(x>1, x*2, x)

[1] 4 6 1 1 10 14

Por padrão, uma função ifelse() verifica cada elemento de um vetor, um por um. Isso nos permite evitar o erro que encontramos anteriormente.

Aqui está como a função ifelse() produz os valores de saída que produziu:

  • O primeiro elemento (2) era maior que 1, então multiplicamos por 2 para obter 2*2 = 4
  • O segundo elemento (3) era maior que 1, então multiplicamos por 2 para obter 3*2 = 6
  • O terceiro elemento (1) não era maior que 1, então deixamos como está: 1
  • O quarto elemento (1) não era maior que 1, então deixamos como está: 1

E assim por diante.

Relacionado: Como escrever um loop For aninhado em R

Recursos adicionais

Os tutoriais a seguir explicam como resolver outros erros comuns em R:

Como corrigir em R: NAs introduzidos por coerção
Como corrigir em R: dim(X) deve ter comprimento positivo
Como corrigir em R: os nomes não correspondem aos nomes anteriores
Como corrigir em R: o comprimento de um objeto mais longo não é múltiplo do comprimento de um objeto mais curto
Como corrigir em R: contrastes só podem ser aplicados a fatores com 2 ou mais níveis

Add a Comment

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