你好!
我有这个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
答案 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"