I do quite a bit of textual analysis with Mathematica, and am currently making some Manipulate
objects to walk people through key terms in the database.
One issue I am running into with Manipulate
however is that it continues to evaluate. For example, please consider the following code: (warning, this code does loop FWIW)
testInput = {{"the", 4415}, {"of", 1284}, {"and", 1608}, {"in",
1384}, {"to", 1353}, {"a", 1205}, {"coal", 815}, {"was",
753}, {"by", 459}, {"were", 449}, {"for", 382}, {"is",
362}, {"with", 324}, {"from", 322}, {"on", 317}, {"that",
311}, {"as", 302}, {"mines", 264}, {"s", 257}, {"mining",
257}, {"it", 253}, {"this", 244}, {"at", 244}, {"be",
225}, {"cape", 216}};
testInput2 = {{"the", 4415}, {"of", 1284}, {"and", 1608}, {"in",
1384}, {"to", 1353}, {"a", 1205}, {"coal", 815}, {"was",
753}, {"by", 459}, {"were", 449}, {"for", 382}, {"is",
362}, {"with", 324}, {"from", 322}, {"on", 317}, {"that",
311}, {"as", 302}, {"mines", 264}, {"s", 257}, {"mining",
257}, {"it", 253}, {"this", 244}, {"at", 244}, {"be",
225}, {"cape", 216}};
files = {testInput, testInput2};
Manipulate[
viewerCount1 = {};
Do[
input = access;
AppendTo[viewerCount1,
If[Length[Flatten[Cases[input, {word1, _}]]] == 0, 0,
Flatten[Cases[input, {word1, _}]][[2]]]];
, {access, files}];
Print[viewerCount1];
, {{word1, "the", "First Word:"}}]
It goes through, runs the Do
loop which picks out the word frequencies of `word1' in the sample text provided.
But then, it continues to loop. It goes back through and does it again. And again. And again. This is all without any change to the Manipulate
input.
Is there a way to get to the end of the line Print[viewerCount1]
and then stop until the input changes?
I have tried to figure out the behaviour by looking elsewhere, such as "Manipulate Evaluation Sequence" and in the documentation, but there seems to be a paucity of textual examples like this.
TrackedSymbols->{word1}
toManipulate
help? $\endgroup$