2017-10-02 1 views
1

I은 ​​6 × 6 행렬을에 매트릭스 테이블()로 변환하는 방법아래와 같이 R

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

M 요소와 6 × 6 행렬이다

 [,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 

I 매트릭스를 유도 할 함수 테이블()을 사용하여 위의 행렬 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을 뺍니다. 왜?

+0

'data.frame (table (M))'? –

+0

나는 제안을했다. 편집에서 내 대답을 참조하십시오. – ravi

+0

왜 다시 매트릭스로 변환해야합니까? 'DF'는 예상 출력이어야합니다. 어쨌든'as.matrix (DF) '를 사용해야한다면. –

답변

1

마침내 대답을 찾았습니다.

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 
관련 문제