2011-06-28 52 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