I am trying to convert a list of string names into symbols, which will then be used to store data. I have 24 files (where the name of each file is a member of the list mentioned above) that I need to process, which is why I am trying to accomplish my goal progammatically. The code below results in a Tag warning. I have read the normal documentation sources, and appreciate that you can not inappropriately assign something to a protected symbol, but this doesn't help me solve the problem.

Creating many different symbols is an error-prone practice, because you need ways to manage them, which is hard in this case. What you seem to be needing is a hash-table, with keys being your names (as strings) - this is the second suggestion in the answer of @Mr.Wizard.
–
Leonid ShifrinJan 26 '12 at 23:19

Hello Todd and welcome to the Mathematica StackExchange. Don't forget to upvote good answers (and other people's questions) using the triangle above the number next to the post, and use the checkmark to "accept" the answer to your question that you think best answers it. You now have enough "reputation" (points) to visit the chat room and chat if you would like.
–
Sjoerd C. de VriesJan 26 '12 at 23:20

(Untested because I don't have your data; but see below for the main idea and a small demonstration.)

The core of the method is this:

ToExpression["a", InputForm, Function[name, name = 1, HoldAll]]

ToExpression will wrap the result into its third argument before evaluating it. We can make the third argument a function that sets a value to the symbol (in this simple example it always sets the value to 1). HoldAll is needed to make sure the symbol won't evaluate when it is passed to the function.

You might find all the evaluation control I'm using here a bit confusing. To learn how to work with unevaluated expressions, I recommend reading

Finally, after answering your actual question, I'd like to suggest you use a hash table instead of symbols:

Instead of creating symbols from the strings "a", "b", "c", ..., and assigning to them, you could assign to myTable["a"], myTable["b"], ... This will make programmatic access to this data trivial. You won't need to bother with evaluation control nearly as much. And more importantly, you can avoid accidental name collisions with existing symbols. Here's an example:

In the first case when you know your symbols haven't been defined yet, you could shorten it with Evaluate[ToExpression[mmsignalnames[[2]]]]=5
–
RojoJan 27 '12 at 15:51

@Rojo yes, you can; I think that With is more flexible however, and I thought it would be easier to use in practice, though I admit I did not actually try it both ways (I would prefer indexed symbols myself).
–
Mr.Wizard♦Jan 28 '12 at 1:58

+1 for an exceptionally clear illustration of RawBoxes
–
Mr.Wizard♦May 11 at 8:26

@Mr.Wizard My life would have been waaay more easier if somebody have shown me this 2-3 years ago :( But I'm glad I've found and understood this. I think this is one of things I was missing in a long time. Thanks for +1 :)
–
KubaMay 11 at 8:28

Mathematica is a registered trademark of Wolfram Research, Inc. While the mark is used herein with the limited permission of Wolfram Research, Stack Exchange and this site disclaim all affiliation therewith.