Como corrigir em r: número incorreto de índices na matriz


Um erro que você pode encontrar no R é:

 Error in x[i, ] <- 0: incorrect number of subscripts on matrix

Este erro ocorre quando você tenta atribuir um valor a uma posição em um vetor, mas acidentalmente inclui uma vírgula como se estivesse atribuindo um valor a uma posição de linha e coluna em uma matriz.

Este tutorial explica exatamente como corrigir esse erro.

Exemplo 1: Corrigindo um erro para um único valor

Suponha que temos o seguinte vetor em R com 5 valores:

 #definevector
x <- c(4, 6, 7, 7, 15)

Agora suponha que tentamos atribuir o valor “22” ao terceiro elemento do vetor:

 #attempt to assign the value '22' to element in third position
x[3, ] <- 22

Error in x[3, ] <- 22: incorrect number of subscripts on matrix

Estamos recebendo um erro porque incluímos uma vírgula ao tentar atribuir o novo valor.

Em vez disso, só precisamos remover o comando:

 assign the value '22' to element in third position
x[3] <- 22

#display updated vector
x

[1] 4 6 22 7 15

Exemplo 2: corrija um erro em um loop for

Este erro também pode ocorrer ao tentar substituir vários valores em um vetor usando um loop ‘for’.

Por exemplo, o código a seguir tenta substituir cada valor em um vetor por zero:

 #definevector
x <- c(4, 6, 7, 7, 15)

#attempt to replace every value in vector with zero
for (i in 1:length(x)) {
    x[i, ]=0
  }

Error in x[i, ] = 0: incorrect number of subscripts on matrix

Estamos recebendo um erro porque incluímos uma vírgula ao tentar atribuir zeros.

Em vez disso, só precisamos remover o comando:

 #definevector
x <- c(4, 6, 7, 7, 15)

#replace every value in vector with zero
for (i in 1:length(x)) {
    x[i]=0
  }

#view updated vector
x

[1] 0 0 0 0 0

Depois que a vírgula for removida, o código será executado sem erros.

Recursos adicionais

Como corrigir em R: NAs introduzidos por coerção
Como reparar em R: índice fora dos limites
Como corrigir erro em R: número incorreto de dimensões

Add a Comment

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