如何用R中命名向量的值替换char矩阵中的元素
我有一个char矩阵和一个double的命名向量,其中向量名对应于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)
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