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