記号と等しくないやあ、
次のスクリプトがありますが、正しい列名 (「Std」) が選択されません。 スクリプトは次のとおりです。
cols = dt << Get column Names();
for( i = 1, i <= N Items( cols ), i++,
if( contains( cols[i] , "Std") != 1
,
Column( dt, cols[i] ) << Set Data Type( "Character" );
Column( dt, cols[i] ) << Set Modeling Type ("Nominal")
)
);
!= は機能しないようです。 これに関して何か助けはありますか? ありがとう
Re: シンボルと等しくない素早い対応をしていただき、本当にありがとうございました。 1 を 0 に置き換えると完全に機能します。
Re: シンボルと等しくないスクリプトを読んだ限りでは、列のデータとモデリング タイプのみが変更されます。すぐに「Std」で始まります (たとえば、「Std Dev」という名前の列は変更されますが、「Col Std」という名前の列は変更されません)。
Contains() は、指定した部分文字列の文字列内の位置を返します。Cols[i] = "Std Dev" の場合、Contains(cols[i],"Std") は値 1 を返します。cols[i] = "Col Std" の場合、Contains(cols[i], "Std") ) "Std" は文字列の 5 番目の文字で始まるため、値 5 が返されます。名前に「Std」を含まない列名を試行した場合にのみ、Contains() は 0 を返します。
Contains(cols[i], "Std") != 1 は、すぐに「Std」で始まらないすべての列名に対して true を返します。
通常、Contains() を使用して文字列内に部分文字列が含まれているかどうかを判断するには、「!=0」または「">0」を使用します。1 を 0 に切り替えて、それが機能するかどうかを確認します。