R error:match.names(clabs,names(xi))中的错误:名称与以前的名称不匹配

时间:2015-01-21 19:03:10

标签: r csv data-binding merge dataframe

我正在尝试在r中组合多个csv文件并且遇到了一个我无法解决的问题,即使我搜索过这个网站

基本上我使用函数来读取多个csv文件并使用reduce命令将它们合并

这不起作用,因为我收到以下错误:

match.names(clabs,names(xi))出错:   名称与以前的名称不匹配

所以我手动拿出了4个csvs,我想运行以查看是否可以解决这个问题,以下是这些4的代码:

dataframeA=read.csv("1.csv")
dataframeA <- subset(dataframeA, select = c(Name,Position))
dataframeB=read.csv("2.csv")
dataframeB <- subset(dataframeB, select = c(Name,Position))
dataframeC=read.csv("3.csv")
dataframeC <- subset(dataframeC, select = c(Name,Position))
dataframeD=read.csv("4.csv")
dataframeD <- subset(dataframeD, select = c(Name,Position))

prac=Reduce(function(x,y) merge(x,y,by="Name",all=TRUE), list(dataframeA, dataframeB, dataframeC, dataframeD))

我已经取出了每个csv文件的两个特定列(总共有3个列,但后面将使用第3列),还需要执行外连接

运行此代码时,我得到与以前相同的错误,因此我查找了原因,发现错误表明列名不相同。所以我在这4个数据帧之间产生了查询以查看

> identical(colnames(dataframeA),colnames(dataframeB))
[1] TRUE
> identical(colnames(dataframeA),colnames(dataframeC))
[1] TRUE
> identical(colnames(dataframeA),colnames(dataframeD))
[1] TRUE

正如您所看到的那样,这并没有带来任何问题,因为我的列名不同,所以我对如何解决这个问题感到茫然。

另外有趣的是只使用三个数据帧运行相同的命令(是的,它可以是三个数据帧中的任何一个)我没有得到任何错误,例如运行

prac=Reduce(function(x,y) merge(x,y,by="Name",all=TRUE), list(dataframeA, dataframeB, dataframeC))

完全没有错误我也可以为dataframeD而不是任何其他数据帧运行它,并让它运行。

我可能只是忽略了一些非常简单的事情,但我根本找不到错误

我很抱歉,如果这个不够清楚,这是我的第一篇stackoverflow帖子,通常只是寻找解决我遇到的任何问题的方法可以帮助我。

感谢您提前提供任何帮助

0 个答案:

没有答案