Aiuto con contiene all'interno se altroCIAO,
Ho scritto il seguente pezzo di codice che controlla se/non un elenco contiene un carattere ed esegue di conseguenza alcuni passaggi.
Per qualche motivo, lo script non verifica la condizione "if contains" ed esegue sempre la parte else. Penso di aver commesso uno stupido errore qui.
Clear Symbols();
Delete Symbols();
clear globals();
dtNext = Open("C:\temp\output.csv","invisible");
Summarize(dtNext, testlist = By(:test));
show(testlist );
SAVEPATH = "C:\temp\";
If(contains(testlist ,"M"),
Macrodt=New Table("test_type",
New Column("test_type",
Character,
Nominal,
Set Values( {"Morning"})
),
invisible
);
, //else
Macrodt=New Table("test_type",
New Column("test_type",
Character,
Nominal,
Set Values( {"Evening"})
),
invisible
);
);
//Save macro file
Macrodt<<SAVE></SAVE>
Ri: Aiuto con contiene all'interno se altroHo usato la funzione cocncatitems e ha funzionato.
Grazie
Ri: Aiuto con contiene all'interno se altroCOME @Jeff_Perkinson suggerisce, maggiori informazioni aiuterebbero, ma prenderò una pugnalata a ciò che penso possa essere fonte di confusione per te. La funzione "Contiene" può essere utilizzata su un elenco OPPURE su una stringa... se stai cercando se un elemento dell'elenco contiene un carattere specifico, la tua istruzione "If" non produrrà il risultato desiderato come scritto. Se questo è il tuo intento, potresti circondare la tua variabile "testlist" con la funzione Concat Items nell'istruzione "If", cioè Concat Items(testlist) restituisce una singola stringa composta da tutti gli elementi dell'elenco uniti insieme. Ora la funzione Contains restituirà una risposta positiva quando cerca un carattere specifico se esiste nella nuova stringa.
Spero che questo ti aiuti.
Ri: Aiuto con contiene all'interno se altroNon ci sono errori evidenti nel tuo codice. Avremo bisogno di ulteriori dettagli per aiutare a capire dov'è la confusione.
Ecco un esempio che mostra che il tuo prototipo è corretto.
dts = {"$SAMPLE_DATA\Fitness.jmp", "$SAMPLE_DATA\Big Class.jmp"};
For( i = 1, i <= N Items( dts ), i++,
dtNext = Open( dts[i] );
Summarize( dtNext, testlist = By( :age ) );
Show( testlist );
If( Contains( testlist, "42" ),
Show( "testlist contains 42" );
, //else
Show( "testlist doesn't contain 42" )
);
);
Il ceppo:
/*:
testlist = {"38", "40", "42", "43", "44", "45", "47", "48", "49", "50", "51", "52", "54", "57"};
"testlist contains 42";
testlist = {"12", "13", "14", "15", "16", "17"};
"testlist doesn't contain 42";