Como reparar em r: a substituição tem comprimento zero


Um erro que você pode encontrar no R é:

 Error in x[1] = x[0]: replacement has length zero

Este erro ocorre quando você tenta substituir um valor em um vetor por outro valor que “tem comprimento zero”, o que significa que ele não existe.

Este tutorial explica exatamente como corrigir esse erro.

Como reproduzir o erro

Suponha que criemos o seguinte vetor com 10 valores em R:

 data = c(1, 4, 5, 5, 7, 9, 12, 14, 15, 17)

Agora suponha que tentamos usar o seguinte loop for() para multiplicar cada valor no vetor pelo valor anterior:

 for (i in 1: length (data)) {
  data[i] = data[i] * data[i-1]
}

Error in data[i] <- data[i] * data[i - 1]: replacement has length zero

Recebemos o erro ” a substituição tem comprimento zero ” porque no primeiro loop tentamos realizar a seguinte multiplicação:

  • dados[1] * dados[0]

Como os índices R começam em 1, o valor data[0] simplesmente não existe.

Podemos verificar isso tentando imprimir o valor localizado na posição 0 do vetor:

 print (data[0])

numeric(0)

O resultado é um vetor digital de comprimento 0 – em outras palavras, ele não existe.

Como corrigir o erro

A maneira de corrigir esse erro é simplesmente usar um loop for() que não tente acessar um valor do vetor que não existe.

Em nosso exemplo, poderíamos corrigir esse erro iniciando o loop for na posição 2 do índice em vez da posição 1:

 for (i in 2: length (data)) {
  data[i] = data[i] * data[i-1]
}

#view updated vector
data

 [1] 1 4 20 100 700 6300 75600
 [8] 1058400 15876000 269892000

Observe que não estamos recebendo um erro porque nunca tentamos acessar uma posição de índice no vetor que não existe.

Recursos adicionais

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

Como corrigir: a condição tem comprimento > 1 e apenas o primeiro elemento será usado
Como corrigir: a substituição tem X linhas, os dados têm Y
Como corrigir: argumento não numérico do operador binário
Como corrigir: dim(X) deve ter um comprimento positivo
Como corrigir: erro ao selecionar argumentos não utilizados

Add a Comment

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