2

I have some variables : Subscript[S, 1], Subscript[S, 2]...etc. But they are defined in a for loop like For[g = 1, g < 4, g++, Subscript[S, g] = g]; Later, I need to print each of the variable name, i.e Subscript[S, 1], Subscript[S, 2]...etc. But I can't find a systematic way to do this. For[g = 1, g < 4, g++, Print[HoldForm@Subscript[S, g]]]; doesn't work because it prints Subscript[S, g] always.

Any idea?

Just look at the code:

For[g = 1, g < 4, g++, Subscript[S, g] = g];
Print[Subscript[S, 1]]
Print[Subscript[S, 2]]
Print[Subscript[S, 3]]
For[g = 1, g < 4, g++, Print[Subscript[S, g]]];
Print[HoldForm@Subscript[S, 1]]
Print[HoldForm@Subscript[S, 2]]
Print[HoldForm@Subscript[S, 3]]
For[g = 1, g < 4, g++, Print[HoldForm@Subscript[S, g]]];
For[g = 1, g < 4, g++, Subscript[S, g] =.];

And this is the result:

enter image description here

user565739
  • 1,119
  • 1
  • 9
  • 14

1 Answers1

3

Some options:

Table[Subscript[HoldForm @ S, i], {i, 3}]

Table[With[{i = i}, HoldForm @ Subscript[S, i]], {i, 3}]

Table[i /. x_ :> HoldForm @ Subscript[S, x], {i, 3}]

You could also use Defer as ssch mentioned if you want to be able to use the output as input that evaluates.

Mr.Wizard
  • 271,378
  • 34
  • 587
  • 1,371