R - 从矩阵创建有序列表

时间:2014-10-04 16:10:18

标签: r matrix apply elements

你好!

我有这个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

我认为将矩阵转换为数据帧可能是必要的,但我不知道如何从我所拥有的那里得到它。

谢谢! // HK

1 个答案:

答案 0 :(得分: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"