Como corrigir: o número de linhas no resultado não é um múltiplo do comprimento do vetor (arg 1)


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

 Warning message:
In cbind(A, B, C):
  number of rows of result is not a multiple of vector length (arg 1)

Este aviso normalmente ocorre quando você tenta usar a função cbind() para unir colunas de vetores de comprimentos diferentes.

Deve-se observar que esta mensagem é simplesmente um aviso e seu código continuará em execução, mas os resultados obtidos podem ser diferentes dos esperados.

O exemplo a seguir mostra como evitar esse aviso na prática.

Como reproduzir o aviso

Suponha que usemos a função cbind() para vincular três vetores em colunas em um quadro de dados:

 #define three vectors with different lengths
A = c(4, 2, 3, 6)
B = c(9, 1, 8, 7, 0, 7)
C = c(3, 5, 3, 3, 6, 4)

#column bind three vectors into data frame
df <- cbind(A, B, C)

#view data frame
df

Warning message:
In cbind(A, B, C):
  number of rows of result is not a multiple of vector length (arg 1)
     ABC
[1,] 4 9 3
[2,] 2 1 5
[3,] 3 8 3
[4,] 6 7 3
[5,] 4 0 6
[6,] 2 7 4

A função cbind funciona com todos os três vetores, mas observe que os valores do primeiro vetor simplesmente se repetem indefinidamente.

Isso é chamado de “reciclagem” em R.

Como evitar o aviso

Para evitar completamente este aviso, precisamos ter certeza de que o comprimento de cada um dos vetores que usamos é o mesmo.

Uma maneira de conseguir isso é preencher os valores ausentes no vetor mais curto com valores NA da seguinte forma:

 #calculate max length of vectors
max_length <- max(length(A), length(B), length(C))

#set length of each vector equal to max length
length(A) <- max_length                      
length(B) <- max_length
length(C) <- max_length 

#cbind the three vectors together into a data frame
df <- cbind(A, B, C)

#view data frame
df

      ABC
[1,] 4 9 3
[2,] 2 1 5
[3,] 3 8 3
[4,] 6 7 3
[5,] NA 0 6
[6,] NA 7 4

Observe que desta vez não recebemos nenhuma mensagem de aviso e os valores curtos do vetor são simplesmente preenchidos com valores NA para garantir que cada um dos três vetores que usamos tenha comprimentos iguais.

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 *