I suspect this is just a misunderstanding on my part, but I want to check if what I am trying is not possible.
I have a list of lists. I want to delete elements that have a length of less than 20 items. I can get the following to work.
Select[meetingSet, Length[#] >= 20 &]
But I was surprised that
DeleteCases[meetingSet, Length[#] <20 &]
Just returns the original list.
Is it possible to make the pattern an anonymous function?
Cheers,
Andy
mikebesso
(Mike Besso)
July 5, 2021, 6:37pm
2
Andy:
I’m not at a place where I can try anything right now. But, let me give this my best guess.
I think the answer might be yes, but the function would have to return a pattern. Your example returns true/false.
neils
(Neil Singer)
July 5, 2021, 6:41pm
3
Andy,
You need a Pattern in DeleteCases while Select uses a function that returns true/false. An example would be
DeleteCases[list, (x_ /; Length[x] < 20)]
Regards,
Neil
You can use a pure function in DeleteCases if it is packaged as a PatternTest:
DeleteCases[{{1, 2}, Range[21]},
_?(Length[#] < 20 &)]
Thank you very much everyone. I need to go and practice more with pattern matching. I can see it’s very powerful, but I haven’t properly understood it up to now.