 
 
 
 
 
 
Manipulate variables not getting evaluated
- To: mathgroup at smc.vnet.net
- Subject: [mg122824] Manipulate variables not getting evaluated
- From: Ken Levasseur <klevasseur at mac.com>
- Date: Fri, 11 Nov 2011 04:57:03 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
Hello
I'm trying to control, using Manipulate, which rows of a matrix are 
displayed.  But have run into a problem.   The code I annotate here is 
copied without comments below.   For this example, I'll use this 2 by 3 
matrix
A = {{1, 2, 3}, {4, 5, 6}};
The following works pretty much as I intend, although there is fixable 
problem if all boxes are unchecked.
Manipulate[
 Transpose[Transpose[A][[Select[Range[3], {a, b, c}[[#1]] & ]]]],
 Evaluate[Sequence @@ {{a, {True, False}}, {b, {True,
      False}}, {c, {True, False}}}]]
Now I want to do the same for larger matrices with various numbers of 
columns so I've tried generalizing as follows:
Number of columns:
M = 3;
This generates a list of M symbols:   col1, col2,=85
switchlist = (ToExpression[StringJoin["col", ToString[#1]]] & ) /@
   Range[M];
This generates a list of controllers for each symbol=85
switches = ({ToExpression[StringJoin["col", ToString[#1]]], {True,
       False}} & ) /@ Range[M];
Now I expected this to work, but it fails:
Manipulate[
 Transpose[Transpose[A][[Select[Range[M], switchlist[[#1]] & ]]]],
 Evaluate[Sequence @@ switches]]
The problem is that the symbols in switchlist don't get evaluated. 
Manipulate[switchlist, Evaluate[Sequence @@ switches]]
 I've tried using controllers like {{col1,True},{True,False}} and that doesn't make a difference.    Any idea why this fails?
Ken Levasseur
UMass Lowell
******************
Code only:
A = {{1, 2, 3}, {4, 5, 6}};
Manipulate[
 Transpose[Transpose[A][[Select[Range[3], {a, b, c}[[#1]] & ]]]],
 Evaluate[Sequence @@ {{a, {True, False}}, {b, {True,
      False}}, {c, {True, False}}}]]
M = 3;
switchlist = (ToExpression[StringJoin["col", ToString[#1]]] & ) /@
   Range[M];
switches = ({ToExpression[StringJoin["col", ToString[#1]]], {True,
       False}} & ) /@ Range[M];
Manipulate[
 Transpose[Transpose[A][[Select[Range[M], switchlist[[#1]] & ]]]],
 Evaluate[Sequence @@ switches]]
Manipulate[switchlist, Evaluate[Sequence @@ switches]]

