2014-03-31 135 views
6

这里还有其他问题解决同一个问题,但我不知道如何解决我的问题基于它。所以,我有要合并使用rbind成为一个独特的数据帧行5个的数据帧,但它返回的错误:R rbind错误row.names重复不允许

“错误row.names<-.data.frame*tmp*,值=值): ‘row.names’复制不允许 此外:警告消息: 设置'row.names'时的非唯一值:'1','10','100','1000','10000','100000','1000000', '1000001 [....]“

数据帧具有相同的列但行数不同。我认为rbind命令将第一列作为row.names。所以试图在五个数据框中添加一个顺序标识,但它不起作用。我试图通过row.names()在数据框之间指定一个连续的行名,但没有成功。合并命令不是我认为的选项,因为有5个数据帧,并且连续的合并将覆盖先例。我只用id创建了一个新的数据框,并尝试加入,但是结果数据框不添加已加入df的列。

跟随DF 1的摘录:

id image  power  value pol class 
1 1 tsx_sm_hh 0.1834515 -7.364787 hh FR 
2 2 tsx_sm_hh 0.1834515 -7.364787 hh FR 
3 3 tsx_sm_hh 0.1991938 -7.007242 hh FR 
4 4 tsx_sm_hh 0.1991938 -7.007242 hh FR 
5 5 tsx_sm_hh 0.2079365 -6.820693 hh FR 
6 6 tsx_sm_hh 0.2079365 -6.820693 hh FR 
[...] 
1802124 1802124 tsx_sm_hh 0.1991938 -7.007242 hh FR 

其他四个DF的是相同的结构,不同之处在于没有它之间重复号码“ID”列。 'pol'和'image'列被定义为级别。 和all.pol <- rbind(df1,df2,df3,df4,df5)返回重复的row.names的这个错误。

有什么想法?

在此先感谢

+0

我无法重现您的错误。你可以发布两个数据帧的“str”吗?你有没有尝试只绑定两个并得到相同的错误?是'rbind(df1,df2,df3,df4,df5)'你用来产生这些错误的确切代码? – rawr

+0

> str(forest) 'data.frame':\t 1802124 obs。 6个变量: $ id:int 1 2 3 4 5 6 7 8 9 10 ... $ image:带有9个级别的因子“tsx_sm_hh”,“tsx_sm_hv”,..:1 1 1 1 1 1 1 1 1 1 ... $ power:num 0.183 0.183 0.199 0.199 0.208 ... $ sigma:'data.frame':\t 1802124 obs。 1变量: .. $ value:num -7.36 -7.36 -7.01 -7.01 -6.82 ... $ pol:因子w/3等级“hh”,“hv”,“vv”:1 1 1 1 1 1 1 1 1 1 ... $ class:chr“FR”“FR”“FR”“FR”... – Jecogeo

+0

> str(herb) 'data.frame':\t 1960371 obs。 6个变量: $ id:int 1802125 1802126 1802127 1802128 1802129 1802130 1802131 1802132 1802133 1802134 ... $ image:带有9个等级的因子“tsx_sm_hh”,“tsx_sm_hv”,..:1 1 1 1 1 1 1 1 1 1 ... $功率:数量0.16 0.165 0.165 0.165 0.185 ... $ sigma:'data.frame':\t 1960371 obs。 1变量: .. $ value:num -7.96 -7.84 -7.84 -7.84 -7.32 ... $ pol:因子w/3等级“hh”,“hv”,“vv”:1 1 1 1 1 1 1 1 1 1 ... $ class:chr“HB”“HB”“HB”“HB”... – Jecogeo

回答

13

我最近有同样的错误。原来在我的情况下,问题是数据帧的属性之一是列表。将其转换为基本对象(例如数字)后,rbind工作得很好。

顺便说一句,行名是第一个变量左边的“行号”。在你的例子中,它是1,2,3,...(和你的id变量相同)。

可以使用rownames(df)看到它,并用rownames(df) <- name_vector设置(name_vector必须具有相同的长度df及其要素必须是唯一的)。