2015-11-04 103 views
1

如果我有一個表示年齡的數字列表:3,5,6,7 ,並有一個與上述年齡相符的姓名列表:allen,jack,amy,亞歷克斯 如果我想創造只包含1列歲的表,我想應該這個樣子的,因爲它在爲R表中的rowname指定列名

Names Ages 
allen 3 
jack 5 
amy 6 
alex 7 

我用下面的代碼在控制檯呼叫

>table<-matrix(age_list, nrow = 4, ncol= 1, byrow = TRUE) 
>rownames(table)<- name_list 

和我只能指定1列名稱爲

>colnames(table)<-c("Ages") 

但結果是類似以下

 Ages 
allen 3 
jack 5 
amy 6 
alex 7 

如何與只有在這樣一個表包含1列分配「名稱」表的左上角。謝謝

+0

避免使用'表'命名,因爲它也是一個內置函數。 – 2015-11-04 05:19:41

回答

2

如果你堅持使用矩陣,那麼答案是你不能分配左上角。 R矩陣的行名稱不是矩陣數據本身的一部分。

但是,您可以使用數據幀來代替:

table <- data.frame(Names=c("allen", "jack", "amy", "alex"), 
        Ages=c(3, 5, 6, 7)) 

> names(table) 
[1] "Names" "Ages" 
+0

'R矩陣沒有行名'你的意思是rownames沒有列名? –

+0

實際上,我使用as.table將其轉換爲表格類型,這是我必須具備的類型。我試圖在數據框中完成它並將其轉換爲表格,當我調用它時,它總是在左側顯示一列從1到4的行數。你有任何解決方案來解決它?或者你能告訴我如何消除左邊的數字列,因爲它仍然是一個表類型。謝謝 –

+0

你原來的問題中的代碼不是很可重複的,所以很難給你一個確切的答案,因爲我們不能確定你想要什麼。如果您希望「名稱」列成爲數據的一部分,那麼它應該作爲數據框或矩陣中的實際列存在。 –

2

你可以做到這一點,如:

ages <- c(3,5,6,7) 
nams <- c("allen","jack","amy","alex") 

out <- matrix(ages) 
dimnames(out) <- list(Names=nams, "Ages") 

#Names Ages 
# allen 3 
# jack  5 
# amy  6 
# alex  7 
+0

謝謝你們,非常感謝你 –

2

你可以試試,

names(dimnames(table)) <- c("Name", "Age") 

#  Age 
#Name [,1] 
#allen 3 
#jack  5 
#amy  6 
#alex  7