R语言如何修复:names do not match previous names

R语言如何修复:names do not match previous names

在这篇文章中,我们将解决R编程语言中 “名称与之前的名称不匹配 “的错误。

一般来说,这个错误的产生是由于在梳理几个向量、数据框架时,列名不匹配。

如何产生这个错误呢

这里我们创建了两个数据框架,有4个不同的列名(num, course, Marks, Subject),而使用rbind()会产生错误。

# 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)

输出

  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

match.names(clabs, names(xi))中的错误:名字与之前的名字不匹配

如何解决这个错误

方法1:改变列名

为了解决这个错误,我们必须改变列的名称,为此,我们将创建第三个数据框架,并将第二个数据框架复制到其中,然后从第一个数据框架中复制列,如下面的代码所示。

# 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)

输出

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

方法2:重命名列名

我们可以重命名列名来解决这个错误,为此我们将把这些列复制到第二个数据框架。

# 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)

输出

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

方法3:使用dplyr包

这里我们将使用dplyr包中的bind_rows()方法,它将创建每一列以及现有的值,如果数据框架中没有任何元素,那么它将保存为NA元素。

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)

输出

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程