# Generation of Sliders via Tables/For loops

I have a list named data that contains lists of arbitrary size,

data={{0.5, 0.5}, {}, {0.5, 0.5, 0.5}, {}, {}, {}, {}, {}, {}, {}}


I now want to generate for each sub-list the appropriate number of sliders (for the empty sets none, though I believe they are easy to skip). However, I am not sure if this is even possible.

In my quest I stumbled upon this thread, Manipulate with a variable number of sliders, which allows me to generate sliders for one sub-list,

Dynamic[Grid[
Table[With[{i = i}, {Slider[Dynamic[data[[1]][[i]]]],
Dynamic[data[[1]][[i]]]}], {i, Length[data[[1]]]}]]]


This works perfectly fine if I use a constant as an index for data, in this case 1.

However, if I want to extend this by using a for loop or a table to make that index variable, say

Table[Dynamic[Grid[
Table[With[{i = i}, {Slider[Dynamic[data[[k]][[i]]]],
Dynamic[data[[k]][[i]]]}], {i, Length[data[[k]]]}]]],{k,1,1}]


the k gets marked red and the code fails. Is it even possible to generate sliders this way? I imagine the reason that the code fails is that Dynamic requires the object under consideration to remain constant, but is there a way around this?

• What does the numbers in the sublists represent? Jun 16, 2014 at 22:02
• Probabilities which exist for some variables but not for others. Jun 16, 2014 at 22:04

May be something like this would work:

   data2 = Select[data, Length@# > 1 &];

Dynamic[Column@
Flatten@Table[
With[{i = i, k = k}, {Slider[Dynamic[data2[[k]][[i]]]],
Dynamic[data2[[k]][[i]]]}], {k, 1, Length@data2, 1}, {i, 1,
Length@data2[[k]]}]]


Second option: To work directly with data you can try this:

 data = {{0.5, 0.5}, {}, {0.5, 0.5, 0.5}, {}, {}, {}, {}, {}, {}, {}};
index = Complement[Range[Length@data], Position[data, {}] // Flatten];

Dynamic[Column@
Flatten@Table[
With[{i = i, k = k}, {Slider[Dynamic[data[[k]][[i]]]],
Dynamic[data[[k]][[i]]]}], {k, index}, {i, 1,
Length@data[[k]]}]]

• Is there a way for the sliders to change the values in the original data, not data2? Apart from that it is exactly what I am looking for. Jun 16, 2014 at 22:34
• @hpschrei I have added what you want. Jun 17, 2014 at 2:12
• Perfect, thank you so much! Jun 17, 2014 at 6:01