如何用R中命名向量的值替换char矩阵中的元素

如何用R中命名向量的值替换char矩阵中的元素,r,R,我有一个char矩阵和一个double的命名向量,其中向量名对应于char矩阵中的元素。如何将矩阵元素替换为相应的双精度元素 named_vec <- setNames(c(1,2,3), c("a","b","c")) a b c 1 2 3 char_mat <- matrix(c("a","b","b","c"), nrow = 2)

我有一个char矩阵和一个double的命名向量,其中向量名对应于char矩阵中的元素。如何将矩阵元素替换为相应的双精度元素

named_vec <- setNames(c(1,2,3), c("a","b","c"))
a b c 
1 2 3 

char_mat <- matrix(c("a","b","b","c"), nrow = 2)
     [,1] [,2]
[1,] "a"  "b" 
[2,] "b"  "c" 

named_vec如果您提供一个数据样本来处理,总是会更容易-我必须在这里创建一个小示例,它可能与您的设置相匹配,也可能与您的设置不匹配:

set.seed(69)

char_matrix如果您提供一个数据样本来处理,它总是比较容易-我必须在这里创建一个小示例,它可能与您的设置相匹配,也可能与您的设置不匹配:

set.seed(69)

char_矩阵谢谢,但是如果char_矩阵有重复的元素,这就不起作用了。对此有什么建议吗?它很有效,但对于非常大的矩阵来说速度非常慢。非常感谢任何其他方法。谢谢,但如果char_矩阵有重复元素,则此方法不起作用。对此有什么建议吗?它很有效,但对于非常大的矩阵来说速度非常慢。我们非常感谢任何其他方法。
result_mat <- matrix(c("1","2","2","3"), nrow = 2)
     [,1] [,2]
[1,] "1"  "2" 
[2,] "2"  "3" 
char_matrix
#>      [,1] [,2] [,3] [,4]
#> [1,] "a"  "e"  "i"  "m" 
#> [2,] "b"  "f"  "j"  "n" 
#> [3,] "c"  "g"  "k"  "o" 
#> [4,] "d"  "h"  "l"  "p"
named_vec
#>  n  m  c  l  p  o  e  f  d  i  j  k  h  a  g  b 
#> 16  1 11  2  8  7 14  6  5 10 13  9  3 12 15  4
char_matrix[match(names(named_vec), char_matrix)] <- named_vec
for(i in seq_along(named_vec)) {
  char_matrix[which(char_matrix == names(named_vec)[i])] <- named_vec[i]
}
mode(char_matrix) <- "numeric"
char_matrix
#>      [,1] [,2] [,3] [,4]
#> [1,]   12   14   10    1
#> [2,]    4    6   13   16
#> [3,]   11   15    9    7
#> [4,]    5    3    2    8