More Efficient Use of Switch Statement
- To: mathgroup at smc.vnet.net
- Subject: [mg122764] More Efficient Use of Switch Statement
- From: Darrel <dbarbato2 at gmail.com>
- Date: Thu, 10 Nov 2011 06:50:55 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
Hi, As a beginner to Mathematica I have a question on whether there is
a more efficient way to do what I'm trying to do. I have something
similar to the following data:
dat = {{"BAD", "A", 2010, "October", "4 PM - 5 PM", 13},
{"BAD", "A", 2011, "April", "4 PM - 5 PM", 9},
{"BAD", "A", 2010, "December", "5 PM - 6 PM", 4},
{"BAD", "A", 2010, "October", "10 PM - 11 PM", 0},
{"BAD", "B", 2011, "October", "3 PM - 4 PM", 10},
{"BAD", "E", 2010, "April", "7 PM - 8 PM", 10},
{"BAD", "A", 2010, "October","Noon - 1 PM", 17},
{"BAD", "A", 2010, "October", "Noon - 1 PM",2},
{"BAD", "C", 2010, "July", "7 PM - 8 PM", 12},
{"GOOD", "A", 2010, "October", "5 PM - 6 PM", 5}}
I also have some manipulate code that looks like the following:
Manipulate[
Switch[
{rating, year, month, type},
{"All Ratings", "All Years", "All Months", "All Types"},
Framed[forumData[[All, 6]]],
{"All Ratings", "All Years", "All Months", _},
Map[If[#[[2]] == type, Framed[#[[6]]], ""] &, forumData]
],
*******(many more options)*****************
{{rating, "All Ratings", "Rating"}, {"GOOD", "BAD", "All Ratings"},
ControlType -> PopupMenu},
{{year, "All Years", "Year"}, {2010, 2011, "All Years"}, ControlType -
> PopupMenu},
{{month, "All Months", "Month"}, {"January", "February", "March",
"April", "May", "June", "July", "August", "September", "October",
"November", "December", "All Months"}},
{{type, "All Types", "Type"}, {"A", "B", "C", "D", "E", "All Types"}}
]
In reality, the code gets long fairly fast because I have even more
data than I have listed here that I want to have as options in the
manipulate. For most of the options I need this "All Types","All
Years",etc. selection to be an option for the user which leads to a
very messy and lengthy switch statement.
Is there a more efficient way of writing this code to avoid the
exhaustive approach, that I have here?
Thanks for the help.
Darrel