if else 内の contains に関するヘルプやあ、
リストに文字が含まれているかどうかをチェックし、それに応じていくつかの手順を実行する次のコードを書きました。
何らかの理由で、スクリプトは「if contains」条件をチェックせず、常に else 部分を実行します。ここで愚かな間違いがあると思います。
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>
Re: if else 内の contains に関するヘルプcocncatitems 関数を使用しましたが、うまくいきました。
ありがとう
Re: if else 内の contains に関するヘルプとして@ジェフ・パーキンソンもっと詳しい情報が役立つと思いますが、混乱の原因になる可能性があると思われる点について説明します。 「Contains」関数は、リストまたは文字列に対して使用できます。リスト項目に特定の文字が含まれているかどうかを検索する場合、「If」ステートメントでは、記述どおりの結果が得られません。 それが目的の場合は、「If」ステートメント内の Concat Items 関数で「testlist」変数を囲むことができます。つまり、Concat Items(testlist) は、すべてのリスト項目をつなぎ合わせて構成される単一の文字列として評価されます。 Contains 関数は、特定の文字を検索するときに、新しい文字列に存在する場合に肯定的な応答を返すようになりました。
お役に立てれば。
Re: if else 内の contains に関するヘルプコードに明らかな間違いはありません。 混乱がどこにあるのかを理解するには、さらに詳しい情報が必要です。
プロトタイプが正しいことを示す例を次に示します。
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" )
);
);
ログ:
/*:
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";