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