MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Manually culling a list

  • To: mathgroup at
  • Subject: [mg115110] Re: Manually culling a list
  • From: DrMajorBob <btreat1 at>
  • Date: Fri, 31 Dec 2010 04:59:36 -0500 (EST)

Actually, I don't think that does the job.

a) When checking items in the "checks" list, you can't see the items in  
"list" that you're selecting.

b) It involves manually listing variables a, b, c... to match the list,  
which isn't very flexible.

c) You cannot run

checks = Map[Composition[Checkbox, Dynamic], selected]

a second time to create a different culled list or to cull it further.

The following solves those problems:

list = CharacterRange["A", "F"];

   checks = Map[Composition[Checkbox, Dynamic], Unique /@ list]}

selected = checks /. {Checkbox -> Identity, Dynamic -> Identity}

{True, False, True, False, False, True}

cull1 = Pick[list, selected]

{"A", "C", "F"}

Partition[Riffle[list, selected], 2]

{{"A", True}, {"B", False}, {"C", True}, {"D", False}, {"E",
   False}, {"F", True}}

To further cull the list:

   checks = Map[Composition[Checkbox, Dynamic], Unique /@ cull1]}

selected = checks /. {Checkbox -> Identity, Dynamic -> Identity}

{False, True, True}

cull2 = Pick[cull1, selected]

{"C", "F"}

Partition[Riffle[cull1, selected], 2]

{{"A", False}, {"C", True}, {"F", True}}


On Thu, 30 Dec 2010 18:07:18 -0600, Zach Bjornson <bjornson at>  

> Hi,
> In[1]:= list = CharacterRange["A", "F"]
> Out[1]= {"A", "B", "C", "D", "E", "F"}
> In[2]:= selected = {a, b, c, d, e, f};
> In[3]:= checks = Map[Composition[Checkbox, Dynamic], selected]
> Out[3]:= (*Checkboxes appear here*)
> In[4]:= culledlist = Dynamic@Pick[list, selected]
> Out[4]= (*Dynamic list of selected items appears here*)
> (*The list in the format you described*)
> In[5]:= Partition[Riffle[list, selected], 2]
> Out[5]= {{"A", True}, {"B", True}, {"C", True}, {"D", False}, {"E",
>    True}, {"F", False}}
> Cheers,
> Zach
> On 12/30/2010 1:10 AM, ntg wrote:
>> Hello guys,
>> Suppose I have a longish list of items that I want to manually cull.
>> It seems I should be able to do something like
>> checkList = ({Checkbox[], #)&  /@ list
>> Then, I could write
>> instanceOfCheckList = checkList
>> check away, and hopefully see something like
>> {{True, item1}, {False, item2}, ...}
>> which I could manipulate. But all I see is the the list of "checked"
>> checkboxs and items, not the consequence of checking the boxes. I can
>> do a FullForm on instanceOfCheckList and extract what I need via list
>> surgery-- but that is inelegant. I'm sure there is some magic
>> incantation involving Evaluate or Interpretation or Dynamic. Can you
>> help?
>> Thanks,
>> Tom

DrMajorBob at

  • Prev by Date: Re: Manually culling a list
  • Next by Date: Re: Manually culling a list
  • Previous by thread: Re: Manually culling a list
  • Next by thread: Re: Manually culling a list