我有一个矩阵
A <- rbind(c(1,1),c(2,2))
和某些类别
cat <- c("Good","Bad", "Ugly")
我想将A转换为相应的类别“好” <-1,“不良” <-2,“丑陋” <-3。但是使用cat
,我得到了
> cat[A]
[1] "Good" "Bad" "Good" "Bad"
如何获得正确的转化?
答案 0 :(得分:3)
您可以先使用t()
转置矩阵:
> cat[t(A)]
#> [1] "Good" "Good" "Bad" "Bad"
或者,如果您希望结果为矩阵,则可以将其转换回:
> matrix(cat[A], ncol = ncol(A))
#> [,1] [,2]
#> [1,] "Good" "Good"
#> [2,] "Bad" "Bad"
答案 1 :(得分:2)
一个选项与命名的vector
或键/值对匹配以替换'A'中的值,然后使用[]
将其分配回'A'以保持初始结构向量
A[] <- names(setNames(c(1:3), cat)[A])
A
# [,1] [,2]
#[1,] "Good" "Good"
#[2,] "Bad" "Bad"
注意
A[] <- cat[A]
在索引从1到3排序的情况下也应该起作用。提到的第一种情况是一般情况