2011-06-28 55 views
0

使用選擇考慮以下列表:條件選擇在數學

answers = { 
      {{1, 2}, {7, 3}}, {{1, 3}, {6, 4}}, 
      {{2, 1}, {2, 8}}, {{2,3}, {8, 2}}, 
      {{3, 1}, {1, 9}}, {{3, 2}, {3, 7}} 
      } 

enter image description here

在哪裏科目順序呈現2點的刺激任務的情況下,不得不選擇他們喜歡的一個,第一子列表:

{{1, 2}, {7, 3}} 

可以讀作

{{COND1,COND2},{COND1優選計數,COND2優選的計數}}

所以COND1 & COND2之間進行選擇的10倍時當COND1呈現第一,COND1優選7倍出10

**

我需要有條件地提取和/或 列表的總和部分。

**

我已經做迄今:

要提取列表,其中COND1時,首先展現:

Select[answers, #[[1, 1]] == 1 &] 

= {{{1,2},{ 7,3},{{1,3},{6,4}}}

並獲得一個條件與所有其他條件的總數:

Plus @@ Select[answers, #[[1, 1]] == 1 &][[All, 2]] 

= {13,7}

現在,我需要:

查詢爲COND1 VS COND2 & COND2 VS COND1總計數:

{{{1, 2}, {7, 3}},{{2, 1}, {2, 8}}}

將是輸出

或計數的總時COND2首先提出反對COND3:

{{2,3}, {8, 2}}

這些都是我所缺少的。 實際上總共有5個條件

回答

3

我喜歡Cases,因爲我認爲語法更清晰。這裏有一個方法,使用一對輕巧的實用功能:

In[25]:= conditions[pat_] := Cases[answers, {pat, _}] 

In[26]:= conditionSums[pat_] := Total[Last /@ conditions[pat]] 

In[27]:= conditions[{1, _}] 

Out[27]= {{{1, 2}, {7, 3}}, {{1, 3}, {6, 4}}} 

In[28]:= conditionSums[{1, _}] 

Out[28]= {13, 7} 

In[29]:= conditions[{1, 2} | {2, 1}] 

Out[29]= {{{1, 2}, {7, 3}}, {{2, 1}, {2, 8}}} 

In[30]:= conditions[{2, 3}] 

Out[30]= {{{2, 3}, {8, 2}}} 
+0

Brett,非常感謝你,我非常喜歡這個,非常清楚。我第一次使用模式! – 500