Cómo corregir: los nombres no coinciden con los nombres anteriores en R

En este artículo vamos a solucionar el error “los nombres no coinciden con los nombres anteriores” en el lenguaje de programación R.

Generalmente, este error se produce debido a que el nombre de las columnas no coincide al combinar varios vectores, dataframe.

¿Cómo producir el error?

Aquí hemos creado dos marcos de datos con 4 nombres de columna diferentes (número, curso, Marcas, Asunto) al usar rbind() se producirá el error.

R

# Create data for chart
val1 <-data.frame("num"=c(77,55,80,60),
                 "course"=c('DSA','C++','R','Python'))
print(val1)
  
val2 <-data.frame("Marks"=c(23,45,81,80),
                 "Subject"=c('COA','OS','SE','AI'))
print(val2)
rbind(val1,val2)

Producción:

  num course
1  77    DSA
2  55    C++
3  80      R
4  60 Python
  Marks Subject
1    23     COA
2    45      OS
3    81      SE
4    80      AI

Error en match.names(clabs, names(xi)): los nombres no coinciden con los nombres anteriores

Cómo resolver este error

Método 1: cambia el nombre de las columnas

Para resolver este error, tenemos que cambiar el nombre de las columnas, para esto, crearemos el tercer marco de datos y copiaremos el segundo marco de datos en él, y copiaremos las columnas del primer marco de datos como se muestra en el código a continuación.

R

# Create data for chart
val1 <-data.frame("num"=c(77,55,80,60),
                 "course"=c('DSA','C++','R','Python'))
  
val2 <-data.frame("Marks"=c(23,45,81,80),
                 "Subject"=c('COA','OS','SE','AI'))
# Replicate data
val3 <- val2         
  
# Change column names
colnames(val3) <- colnames(val1)    
rbind(val1,val3)

Producción:

num    course
77    DSA
55    C++
80    R
60    Python
23    COA
45    OS
81    SE
80    AI

Método 2: cambiar el nombre de las columnas

Podemos cambiar el nombre de las columnas para resolver este error, para esto copiaremos las columnas en el segundo marco de datos.

R

# Create data for chart
val1 <-data.frame("num"=c(77,55,80,60),
                 "course"=c('DSA','C++','R','Python'))
  
val2 <-data.frame("Marks"=c(23,45,81,80),
                 "Subject"=c('COA','OS','SE','AI'))
  
# rename second data frame columns
names(val2) <- names(val1)
  
# row bind the two data frames
rbind(val1, val2)

Producción:

77    DSA
55    C++
80    R
60    Python
23    COA
45    OS
81    SE
80    AI

Método 3: Usando el paquete dplyr

Aquí usaremos los métodos bind_rows() del paquete dplyr, creará cada columna junto con el valor existente si el marco de datos no tiene ningún elemento, luego se guarda como elementos NA. 

R

library("dplyr")
  
# Create data for chart
val1 <-data.frame("num"=c(77,55,80,60),
                 "course"=c('DSA','C++','R','Python'))
  
val2 <-data.frame("Marks"=c(23,45,81,80),
                 "Subject"=c('COA','OS','SE','AI'))
  
bind_rows(val1, val2)

Producción:

num    course    Marks    Subject
77    DSA    NA    NA
55    C++    NA    NA
80    R    NA    NA
60    Python    NA    NA
NA    NA    23    COA
NA    NA    45    OS
NA    NA    81    SE
NA    NA    80    AI

Publicación traducida automáticamente

Artículo escrito por skrg141 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *