2013-06-18 2 views
1

누구든지 제공 할 수있는 모든 도움에 대해 미리 감사드립니다.Mathematica, 공통 값을 가진 그룹 쌍

나는, 출력 Output={ { {1,4},{1,5} } , {{2, 3}, {2, 5}, {3, 4}, {6, 8}, {6, 7}, {7, 8} } }이나 뭐 비슷한 첫 번째 요소 같을 것이다 목록 a={{1, 4}, {2, 3}, {1, 5}, {2, 5}, {3, 4}, {6, 8}, {6, 7}, {7, 8}}와 종류 이상적으로 값 1을 포함하는 쌍으로 짝을하기 위해 티카에서 GatherBy 기능을 사용하려고 해요 출력에 a에있는 모든 요소의 목록은 1을 포함하고 두 번째 요소에는 1을 포함하지 않는 모든 쌍이 들어 있습니다.

건배!

+1

감사 너 용용. 나는 1을 포함하는 모든 집합을 결합 할 것이므로 더 잘 작동하도록 'b = GatherBy [a, MemberQ [#, 1] &]'라고 발견했습니다. 그래서 그들은 나중에 그 과정에서 쌍이되지 않을 것입니다. 그 부분을 나간 죄송합니다. 결과 값으로 볼 때, 값 4를 기준으로 그룹화 할 때 비슷한 명령을 사용합니다. b = GatherBy [a, MemberQ [#, 4] &] 출력 : {{{6, 8}, { {{1, 4, 5}, {2, 3, 4, 5}}} 하지만 처음에는 for가 들어있는 목록을 원합니다. 어떤 제안? – filup

답변

1
GatherBy[a, #[[1]] == 1 || #[[2]] == 1 &] 
0

원하는 순서를 보장하기 위해, 주석에 Sort 결과를 질문에 대답 :

a = {{1, 4}, {2, 3}, {1, 5}, {2, 5}, {3, 4}, {6, 8}, {6, 7}, {7, 8}}; 
SortBy[GatherBy[a, MemberQ[#, 2] &], !MemberQ[[email protected]#, 2] &] 

또 다른 방법 :

Reap[Sow[ # , MemberQ[#, 2] ] & /@ a, {True, False}] // Last 

어느 수율 :

{{{{2, 3}, {2, 5}}}, {{{1, 4}, {1, 5}, {3, 4}, {6, 8}, {6, 7}, {7, 
8}}}} 
관련 문제