R 将矩阵单元格替换为相应的行名称

R 将矩阵单元格替换为相应的行名称,r,matrix,indexing,replace,R,Matrix,Indexing,Replace,我正在使用一个矩阵,它看起来像这个输入 我试图用相应的行名称替换第2列上的数字。也就是说,所有1将被行名称(矩阵)替换。因此,我有以下输出 实际矩阵对于循环应用程序太大。。。很抱歉,我使用的是图像,因为我发现在excel上表示图像更容易。我也很抱歉我是新来的 矢量化方法(应该是最快的): 编辑:我将矢量化解决方案放在顶部,因为这显然是更快(甚至是最快的?)的方法。sapply(df$B,function(x)df$A[x])或者更聪明的df$A[df$B]这些不是行名称。 mat <

我正在使用一个矩阵,它看起来像这个输入

我试图用相应的行名称替换第2列上的数字。也就是说,所有1将被行名称(矩阵)替换。因此,我有以下输出

实际矩阵对于循环应用程序太大。。。很抱歉,我使用的是图像,因为我发现在excel上表示图像更容易。我也很抱歉我是新来的

矢量化方法(应该是最快的):



编辑:我将矢量化解决方案放在顶部,因为这显然是更快(甚至是最快的?)的方法。

sapply(df$B,function(x)df$A[x])
或者更聪明的
df$A[df$B]
这些不是行名称。
mat <- matrix(c(letters[1:11], 1,1,1,2,2,3,3,3,4,4,4), ncol = 2)
    colnames(mat) <- c("A", "B")
    rownames(mat) <- 1:11

> mat
   A   B  
1  "a" "1"
2  "b" "1"
3  "c" "1"
4  "d" "2"
5  "e" "2"
6  "f" "3"
7  "g" "3"
8  "h" "3"
9  "i" "4"
10 "j" "4"
11 "k" "4"


mat[, "B"] <- mat[as.numeric(mat[, "B"]), "A"]
> mat
   A   B  
1  "a" "a"
2  "b" "a"
3  "c" "a"
4  "d" "b"
5  "e" "b"
6  "f" "c"
7  "g" "c"
8  "h" "c"
9  "i" "d"
10 "j" "d"
11 "k" "d"
mat[, "B"] <- sapply(mat[, "B"], function(x) mat[as.numeric(x), "A"])