2014-03-31 161 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及其要素必須是唯一的)。