Come risolvere in r: errore in rbind(deparse.level, …): i numeri delle colonne degli argomenti non corrispondono


Un errore che potresti riscontrare in R è:

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

Questo errore si verifica quando si tenta di utilizzare la funzione rbind() in R per associare due o più frame di dati che non hanno lo stesso numero di colonne.

Questo tutorial spiega esattamente come correggere questo errore.

Come riprodurre l’errore

Supponiamo di avere i seguenti due frame di dati in 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

Supponiamo ora di provare a utilizzare rbind per associare questi due frame di dati in un singolo frame di dati:

 #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

Riceviamo un errore perché i due frame di dati non hanno lo stesso numero di colonne.

Come correggere l’errore

Esistono due modi per risolvere questo problema:

Metodo 1: utilizzare rbind su colonne comuni

Un modo per risolvere questo problema è utilizzare la funzione intersect() per trovare nomi di colonne comuni tra i frame di dati e quindi collegare i frame di dati solo su quelle colonne:

 #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

Metodo 2: utilizzare bind_rows() da dplyr

Un altro modo per risolvere questo problema è utilizzare la funzione bind_rows() dal pacchetto dplyr , che inserisce automaticamente i valori NA per i nomi di colonna non corrispondenti:

 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

Si noti che i valori NA vengono popolati per i valori df1 poiché la colonna z non esisteva in questo frame di dati.

Risorse addizionali

I seguenti tutorial spiegano come risolvere altri errori comuni in R:

Come risolvere il problema in R: i nomi non corrispondono ai nomi precedenti
Come risolvere in R: la lunghezza di un oggetto più lungo non è un multiplo della lunghezza di un oggetto più corto
Come risolvere in R: i contrasti possono essere applicati solo a fattori con 2 o più livelli

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *