Como corrigir em r: erro em rbind(deparse.level,…): os números das colunas dos argumentos não correspondem


Um erro que você pode encontrar no R é:

 Error in rbind(deparse.level, ...): 
  numbers of columns of arguments do not match 

Este erro ocorre quando você tenta usar a função rbind() em R para unir dois ou mais quadros de dados que não possuem o mesmo número de colunas.

Este tutorial explica exatamente como corrigir esse erro.

Como reproduzir o erro

Suponha que temos os dois quadros de dados a seguir em R:

 #create first data frame
df1 <- data. frame (x=c(1, 4, 4, 5, 3),
                  y=c(4, 4, 2, 8, 10))

df1

  xy
1 1 4
2 4 4
3 4 2
4 5 8
5 3 10

#create second data frame
df2 <- data. frame (x=c(2, 2, 2, 5, 7),
                  y=c(3, 6, 2, 0, 0),
                  z=c(2, 7, 7, 8, 15))

df2

  X Y Z
1 2 3 2
2 2 6 7
3 2 2 7
4 5 0 8
5 7 0 15

Agora suponha que tentamos usar o rbind para vincular esses dois quadros de dados em um único quadro de dados:

 #attempt to row-bind the two data frames together
rbind(df1, df2)

Error in rbind(deparse.level, ...): 
  numbers of columns of arguments do not match

Recebemos um erro porque os dois quadros de dados não possuem o mesmo número de colunas.

Como corrigir o erro

Existem duas maneiras de resolver este problema:

Método 1: use rbind em colunas comuns

Uma maneira de resolver esse problema é usar a função intersect() para encontrar nomes de colunas comuns entre quadros de dados e, em seguida, vincular os quadros de dados apenas nessas colunas:

 #find common column names
common <- intersect(colnames(df1), colnames(df2))

#row-bind only on common column names
df3 <- rbind(df1[common], df2[common])

#view result
df3

   xy
1 1 4
2 4 4
3 4 2
4 5 8
5 3 10
6 2 3
7 2 6
8 2 2
9 5 0
10 7 0

Método 2: use bind_rows() do dplyr

Outra maneira de resolver esse problema é usar a função bind_rows() do pacote dplyr , que preenche automaticamente os valores NA para nomes de colunas incompatíveis:

 library (dplyr)

#bind together the two data frames
df3 <- bind_rows(df1, df2)

#view result
df3

   X Y Z
1 1 4 NA
2 4 4 NA
3 4 2 NA
4 5 8 NA
5 3 10 NA
6 2 3 2
7 2 6 7
8 2 2 7
9 5 0 8
10 7 0 15

Observe que os valores NA são preenchidos para os valores df1 , pois a coluna z não existia neste quadro de dados.

Recursos adicionais

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

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 *