2014-03-04 41 views
2

如何將一列添加到R data.frame作爲新的第一列,以便所有其他列都移動一列?在數據框的開頭插入列

像:

a|b|c --> new|a|b|c 

我需要這樣做,因爲我希望row.names成爲離散列。這是必需的,因爲write.arff函數採用data.frame作爲輸入,但在寫入文件時不保留名稱。

+10

'cbind(rownames(df),df)'? – BrodieG

+0

謝謝。我現在意識到我問了一些非常基本的東西,但不知何故,我沒有找到答案。 – aldorado

+0

在側面說明,你是出口使用'Weka'?在Weka中很少有這樣的功能,在R中無法完成而不需要間歇步驟 –

回答

2

這在評論中已經回答了,但要更清楚地表明有一個答案,這裏有一個小例子:

首先,一些樣本數據:

(df <- data.frame(A = 1:2, B = 3:4, row.names = c("row1", "row2"))) 
#  A B 
# row1 1 3 
# row2 2 4 

從意見的建議。請注意,原始的row.names仍然是數據的一部分。

cbind(rn = rownames(df), df) 
#  rn A B 
# row1 row1 1 3 
# row2 row2 2 4 

您可以通過在cbind步驟設置row.names = NULL擺脫這一點。由於您是cbind ing data.frames,如果需要,您還可以將其他參數傳遞給data.frame(如stringsAsFactors = FALSE,如果您不希望「rn」列爲factor)。

cbind(rn = rownames(df), df, row.names = NULL) 
#  rn A B 
# 1 row1 1 3 
# 2 row2 2 4