0
$\begingroup$

For example, say I have a set of data which takes the form

list = {{1,2,4,5,3,2},{2,3,4,2,1,6},{2,3,4,5,4,3}}  

where all of the elements have a length of 6. Then I have to run this list through many functions each with various restrictions e.g.:

ptOf[event_]:=px+py/;(px+py)<4, 

where px is the first element in the 6 vector {px,py,_,_,_,_} and py is the second element.

How would I cut the elements from the original list that do not satisfy this condition?

$\endgroup$
3
  • 1
    $\begingroup$ I don't really get it but Select[list, #[[1]] + #[[2]] < 4 &]? $\endgroup$
    – Öskå
    Commented Jun 27, 2014 at 15:45
  • $\begingroup$ Thank you. Just what I was looking for. $\endgroup$
    – user16104
    Commented Jun 27, 2014 at 16:04
  • $\begingroup$ This is an extremely common class of question. In addition to the Linked questions under the original see also e.g. (11219), (11780), (30155), (33880). For clarity I would use: Cases[list, {a_, b_, ___} /; a + b < 4]. For speed choose numeric methods using e.g. UnitStep. $\endgroup$
    – Mr.Wizard
    Commented Jun 27, 2014 at 19:46

1 Answer 1

1
$\begingroup$

For this special case you need to use Select and Part a.k.a. [[]]:

list = {{1,2,4,5,3,2},{2,3,4,2,1,6},{2,3,4,5,4,3}}  
Select[list, #[[1]] + #[[2]] < 4 &]
{{1, 2, 4, 5, 3, 2}}
$\endgroup$

Not the answer you're looking for? Browse other questions tagged or ask your own question.