2014-10-04 42 views
0

嗨!R - 從矩陣創建一個有序列表

我有這個24x24矩陣與從1-24很多數字。當我想每一個細胞又與X(例如3)的值到第X行的row.name(如NAME3)

我有什麼

row.names   V1 V2 V3 
name1    1  3 10 
name2    3 20 1 
name3    5 13 2 
...    .. .. .. 
name24   19  3 4 

什麼我現在要做的是將所有這些數字轉換成與第i行名稱相等的字符串,因此1應該轉換爲name1等等。

我需要

row.names    V1  V2  V3 
name1    name1  name3 name10 
name2    name3 name20 name1 
name3    name5 name13 name2 
...     ..  ..  .. 
name24    name19 name3 name4 

我想這可能是對所必要的矩陣轉換成數據幀是什麼,但我不exacly知道如何從我有什麼那裏。

謝謝! // HK

+0

也許我還不夠清楚。我需要用accordin行的row.name更新單元格calue。 說如果第3行的row.name是「比利鮑勃」,我需要所有3的更新爲「比利鮑勃」 – user4098307 2014-10-04 16:17:23

回答

3

使用基本[將值與rownames相匹配。

下面是一個例子。

假設我們已經開始與此:

set.seed(1) 
m <- matrix(sample(1:3, 12, TRUE), 
      ncol = 4, 
      dimnames = list(letters[1:3], LETTERS[1:4])) 
m 
# A B C D 
# a 1 3 3 1 
# b 2 1 2 1 
# c 2 3 2 1 

這裏是rownames(m)[m]樣子:

rownames(m)[m] 
# [1] "a" "b" "b" "c" "a" "c" "c" "b" "b" "a" "a" "a" 

使用[]保留原始矩陣的變暗,同時替換值:

m[] <- rownames(m)[m] 
m 
# A B C D 
# a "a" "c" "c" "a" 
# b "b" "a" "b" "a" 
# c "b" "c" "b" "a" 
+0

Exacly我所需要的。感謝您的乾淨答案! – user4098307 2014-10-05 14:23:30