如何将table()转换为r

时间:2017-10-02 02:40:29

标签: r matrix

我有一个6x6矩阵,如下所示:

M = matrix(0,nrow = 6, ncol = 6);
for(i in 1:6)
  for(j in 1:6)
    M[i,j]<- i+j

M是带有元素的6x6矩阵:

     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    2    3    4    5    6    7
[2,]    3    4    5    6    7    8
[3,]    4    5    6    7    8    9
[4,]    5    6    7    8    9   10
[5,]    6    7    8    9   10   11
[6,]    7    8    9   10   11   12

我想使用r函数table()从矩阵M上方导出一个元素矩阵。

表(M)的输出是:

> table(M)
M
 2  3  4  5  6  7  8  9 10 11 12 
 1  2  3  4  5  6  5  4  3  2  1 

如何从表(M)输出中简单地制作一个11x2矩阵?

我尝试了as.matrix(table(M))但它将元素作为行名称,虽然我不确定发生了什么!

> as.matrix(table(M))
   [,1]
2     1
3     2
4     3
5     4
6     5
7     6
8     5
9     4
10    3
11    2
12    1

正如所建议:

DF <- data.frame(table(M))
ma <- data.matrix(DF)

      M Freq
 [1,]  1    1
 [2,]  2    2
 [3,]  3    3
 [4,]  4    4
 [5,]  5    5
 [6,]  6    6
 [7,]  7    5
 [8,]  8    4
 [9,]  9    3
[10,] 10    2
[11,] 11    1

第1栏已更改。每个元素减去1.为什么?

3 个答案:

答案 0 :(得分:2)

我终于找到了答案。

DF <- data.frame(table(M))
pmfY <- apply(as.matrix.noquote(DF),2,as.numeric)

pmfY的输出与表(M)完全相同。

pmfY
       M Freq
 [1,]  2    1
 [2,]  3    2
 [3,]  4    3
 [4,]  5    4
 [5,]  6    5
 [6,]  7    6
 [7,]  8    5
 [8,]  9    4
 [9,] 10    3
[10,] 11    2
[11,] 12    1

答案 1 :(得分:0)

as.data.frame(unclass(table(M)))

答案 2 :(得分:0)

在回溯你的步骤后,...

M = matrix(0,nrow = 6, ncol = 6);
for(i in 1:6)
  for(j in 1:6)
    M[i,j]<- i+j

x <- table(M)

我们可以调查......发生了什么

str(x)
#>  'table' int [1:11(1d)] 1 2 3 4 5 6 5 4 3 2 ...
#>  - attr(*, "dimnames")=List of 1
#>   ..$ M: chr [1:11] "2" "3" "4" "5" ...

如您所见,元素已经名称而不是值。 这就是为什么 as.matrix(table(M)) 不给你元素 作为第一列中的值。相反,名称仍然是名称。 知道这一点,另一种解决方案是提取名称和 将它们作为整数添加到矩阵中:

matrix(c(as.integer(names(x)), x), ncol = 2, dimnames = list(NULL, c("M", "Freq")))
#>          M Freq
#>  [1,]    2    1
#>  [2,]    3    2
#>  [3,]    4    3
#>  [4,]    5    4
#>  [5,]    6    5
#>  [6,]    7    6
#>  [7,]    8    5
#>  [8,]    9    4
#>  [9,]   10    3
#> [10,]   11    2
#> [11,]   12    1

reprex package (v2.0.0) 于 2021 年 4 月 23 日创建