2012-09-07 3 views
-3

내가 바이너리 martix가 나는 두 서브 세트 (매트릭스) 열의 동일한 수의 행의 횟수가 다른으로이 행렬의 서브 세트를 필요부분 이진 행렬

a0=rep(1,40) 
a=rep(0:1,20) 
b=c(rep(1,20),rep(0,20)) 
c0=c(rep(0,12),rep(1,28)) 
c1=c(rep(1,5),rep(0,35)) 
c2=c(rep(1,8),rep(0,32)) 
c3=c(rep(1,23),rep(0,17)) 
da=matrix(cbind(a0,a,b,c0,c1,c2,c3),nrow=40,ncol=7) 

(예를 들어 15 % 대 85 %) 그러나 손질하는 동안 2 개의 부분 집합이 공선 성을 가지지 않는다는 것을 명심하십시오.

내가 가진 문제. 내가 다 사용

ind <- sample(1:nrow(da), trunc(85*nrow(da)/100)) 
trda <- da[ind,] 
teda <- da[-ind,] 

을 부분 집합 때 나는이 부분 집합하지 전체 순위 중 하나 얻을.

내가 공선 성을 가지지 않고 서브 세트를 어떻게 만들 수 있는지 설명해 줄 수 있습니까? 이것은 단지 예일뿐입니다. 당신은 당신의 행 0과를 가지고 있기 때문에 나는 큰 행렬

감사

+1

단일/비 특이 행렬이 정사각형이어야한다는 것을 감안할 때, 어떻게하면 80000x900 행렬을 두 개의 사각형으로 나눌 수 있는지 보지 못합니다 ... – Spacedman

+0

당신이 아무 말도하지 않았기 때문에 나는 그것을 몰랐습니다. 교차 제품. 큰 매트릭스를 두 개의 작은 매트릭스로 나누고 싶은 것처럼 들립니다. '쪼개짐'이란 무엇을 의미합니까? 나에게 행렬을 따라 행렬을 두 조각으로 자르는 것을 의미합니다. 인접하지 않을 수있는 행 또는 열의 하위 집합을 가져 오는 것을 의미하지는 않습니다. 질문을 편집하고 예를 들어 설명해주십시오 (예를 들어 아마도 12x5 행렬로) – Spacedman

답변

0

을 처리하고, 동일 선상 행은 동일한 행이 있습니다.

계산 열을 따라 붙여 넣기하여 행 문자열 :

> das = apply(da,1,paste,collapse="") 
> das 
[1] "1010111" "1110111" "1010111" "1110111" "1010111" "1110011" "1010011" 
[8] "1110011" "1010001" "1110001" "1010001" "1110001" "1011001" "1111001" 
[15] "1011001" "1111001" "1011001" "1111001" "1011001" "1111001" "1001001" 
[22] "1101001" "1001001" "1101000" "1001000" "1101000" "1001000" "1101000" 
[29] "1001000" "1101000" "1001000" "1101000" "1001000" "1101000" "1001000" 
[36] "1101000" "1001000" "1101000" "1001000" "1101000" 
다음

이 할 수있는 경우에 대한 빠른 검사 나 아닌 모든 문자열은 두 번 이상 표시할지 여부 :

> any(table(das)>2) 
[1] TRUE 

경우 때문에 두 개 이상의 행렬이있는 경우 행렬 중 하나에 같은 행이 둘 이상있을 것입니다. 예를 들어 여덟 개의 1001000 행이 있습니다.

실제 분할을 수행하려면 두 번 나타나는 각 행 중 하나를 가져 와서 각 행렬에 넣고 나머지는 나눠야합니다.

여기에 올바른 줄이 있습니까?