Hilfe bei enthält, wenn sonstHallo,
Ich habe den folgenden Code geschrieben, der prüft, ob eine Liste ein Zeichen enthält und einige Schritte entsprechend ausführt.
Aus irgendeinem Grund prüft das Skript nicht auf die „Wenn enthält“-Bedingung und führt immer den „Anderen“-Teil aus. Ich glaube, ich habe hier einen dummen Fehler gemacht.
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>
Betreff: Hilfe bei „Contains inside if else“.Ich habe die Funktion cocncatitems verwendet und es hat funktioniert.
Danke
Betreff: Hilfe bei „Contains inside if else“.Als @Jeff_Perkinson schlägt vor, mehr Informationen würden helfen, aber ich werde einen Versuch unternehmen, was meiner Meinung nach für Verwirrung bei Ihnen sorgen könnte. Die Funktion „Enthält“ kann für eine Liste ODER eine Zeichenfolge verwendet werden. Wenn Sie herausfinden möchten, ob ein Listenelement ein bestimmtes Zeichen enthält, liefert Ihre „If“-Anweisung nicht das gewünschte Ergebnis wie geschrieben. Wenn das Ihre Absicht ist, könnten Sie Ihre Variable „testlist“ mit der Funktion „Concat Items“ in der „If“-Anweisung umgeben, d. h. „Concat Items(testlist)“ ergibt eine einzelne Zeichenfolge, die aus allen zusammengefügten Listenelementen besteht. Jetzt gibt die Funktion „Contains“ eine positive Antwort zurück, wenn nach einem bestimmten Zeichen gesucht wird, sofern dieses in der neuen Zeichenfolge vorhanden ist.
Hoffe das hilft.
Betreff: Hilfe bei „Contains inside if else“.Es gibt keinen offensichtlichen Fehler in Ihrem Code. Wir benötigen weitere Details, um herauszufinden, wo die Verwirrung liegt.
Hier ist ein Beispiel, das zeigt, dass Ihr Prototyp korrekt ist.
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" )
);
);
Das Protokoll:
/*:
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";