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