将数字矩阵转换为R中的分类?

时间:2019-01-30 11:05:43

标签: r matrix categories

我有一个矩阵

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" 

如何获得正确的转化?

2 个答案:

答案 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排序的情况下也应该起作用。提到的第一种情况是一般情况