【冰糖R语言】Error in match.names(clabs, names(xi)) - 名字同原来已有的名字不相对

在进行一些处理时,出现这样的错误提示:

原因在于,对data.frame类型进行rbind()操作时,存在不对应的列,而rbind()是对data.frame的列名进行匹配后进行行扩增的;

比如,如下定义了两个data.frame,dt1,dt2,存在不相对的列名,则会报错:

【冰糖R语言】Error in match.names(clabs, names(xi)) - 名字同原来已有的名字不相对_第1张图片

此时,如果将dt2的colnames中的F5改为F1,即与dt1列名一样但是列顺序不同,再进行rbind()操作:

【冰糖R语言】Error in match.names(clabs, names(xi)) - 名字同原来已有的名字不相对_第2张图片

可以发现,data.frame的rbind操作是根据colnames进行匹配,从而进行行扩增操作,列顺序以第一个data.frame为准;

如果将dt1,dt2的类型转为matrix再进行rbind()操作,则不存在这样的问题,会根据列对应位置进行行扩增,不受列名影响:

【冰糖R语言】Error in match.names(clabs, names(xi)) - 名字同原来已有的名字不相对_第3张图片

另,如果对data.frame进行cbind操作,是否受rownames一致性的影响呢?答:不影响

同样定义两个data.frame,dt1,dt2,设置不相对的行名,进行cbind()操作:

【冰糖R语言】Error in match.names(clabs, names(xi)) - 名字同原来已有的名字不相对_第4张图片

不存在问题,行名没有影响

data.frame是特殊的二维列表,每一列可以是不同的数据类型,这表示它被设计为列为研究对象的数据结构,在使用时一定要注意,而不能直接当做矩阵使用。

你可能感兴趣的:(R,r语言)