Dear Yannick,
A bit late, only now having the chance to look at your files.
As far as I understand from your code, you're trying to do automatize the production of truth tables and ESA solutions for three different outcomes.
This is nice from an efficiency point of view, but as you can see it can consume a lot more time and effort to debug than running three separate analysis the classical way.
What happens is, when the truth tables are generated, the command registers the original command, which function findRows() uses to create the truth table for the negation of the outcome.
However, the command is part of a local environment in the function create_truthTables(), for instance:
conditions = currentNonOutcomeNames
and the object "currentNonOutcomeNames" is not available in function run_esa()
I see you're trying to get it from the truth table object:
currentNonOutcomeNames <- get(paste("tt", outcome_name, sep = ""))$call$conditions
but that assumes the (original) object "currentNonOutcomeNames" exists in the local scope, which defeats the command's purpose.
You can have the conditions' names **not** from the "call" component but from the "options" component:
currentNonOutcomeNames <- get(paste("tt", outcome_name, sep = ""))$options$conditions
and get past the findRows() functions, but then you will get an error when assigning "nam3" because you're trying to use an object called "conThreshold" which does not exist in the local scope of function run_esa(), simply because you've made a typo in the formal arguments of the function, calling it "conThreshhold" (note the double "h").
All in all, this kind of automatization might not worth the effort, seems like an unnecessary complication of a simple three separate analyses.
Hope this helps,
Adrian