2014-03-28 28 views
2

假設創建一個數據幀的頭我有一個數據幀:從第一行中的數據幀

a <- data.frame(a=c("f", 2, 3), b=c("g", 3, 7), c=c("h", 2, 4)) 

,我想從第一行創建列名。我的猜測是:

names(a) <- a[1,] 

這給:

names(a) 
[1] "3" "3" "3" 

我沒有完全得到發生了什麼。任何人都可以解釋並幫助我如何以正確的方式做到這一點?

+0

不知道爲什麼..但你可以換一個'[1]''在不公開() ' – rawr

+2

爲什麼你有這個data.frame?看起來像是數據導入/創建過程中應該解決的問題。 – Roland

+0

@Roland我輸入一個包含因子和數值數據的csv。因此我不能使用矩陣......如果這是你的意思。 – joaoal

回答

1

的是與具有不同電平的每一列因素的列。 R將他們投入整數。因爲,每一列的字母出現持續的字母數字就被分配值3

嘗試

names(a) = as.character(unlist(a[1,])) 
names(a) 
+0

這個答案中的「as.character」是做什麼的? – A5C1D2H2I1M1N2O1R2T1

+0

什麼都沒有!完全沒有它! – user3472874

+0

看起來'name()'將因子轉換爲字符本身 – SeDur

1

嘗試這種情況:

> colnames(a) <- unlist(a[1,]) 
> a 
    f g h 
1 f g h 
2 2 3 2 
3 3 7 4 
+0

我不認爲「水滴」是必需的,是嗎? – A5C1D2H2I1M1N2O1R2T1

+0

你說得對@AnandaMahto,現在是早上8點20分,現在想想R還爲時過早,需要一杯咖啡,謝謝你指出了這一點。 –

+2

或8PM對於像我這樣的人來說,或許來不及想想R :-) – A5C1D2H2I1M1N2O1R2T1

相關問題