我有一个 6x6 矩阵,如下所示:
M = matrix(0,nrow = 6, ncol = 6);
for(i in 1:6)
for(j in 1:6)
M[i,j]<- i+j
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
我想使用 r 函数 table() 从上面的矩阵 M 中导出具有频率的元素矩阵。
table(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
Run Code Online (Sandbox Code Playgroud)
如何从 table(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
Run Code Online (Sandbox Code Playgroud)
如建议:
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
Run Code Online (Sandbox Code Playgroud)
第一列已更改。每个元素减1。为什么?
尝试matrix
代替as.matrix
:
matrix(M, ncol = ncol(M), dimnames = dimnames(M))
Run Code Online (Sandbox Code Playgroud)
我终于找到了答案。
DF <- data.frame(table(M))
pmfY <- apply(as.matrix.noquote(DF),2,as.numeric)
Run Code Online (Sandbox Code Playgroud)
pmfY 的输出与 table(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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13268 次 |
最近记录: |