ループで列を作成する<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />やあ、
私のスクリプトには、列を作成するループがあり、うまく機能しますが、少し改善したいと思います。 (数値)|(文字)|(数値)|(文字) などの形式のデータがあります。そのため、データ型が交互にあり、通常の形式で出力したいと思います。 現在、列は数値形式であるため、文字データは表示されません。 しかし、文字形式に変更すると、数値データ構造が失われます。 だから私はこのループを持っています:
For(j = 1, j <= nitems(ピンリスト), j++,
dt2 << 新しい列 (pinList、数値、連続、Format("Best",12));
dt2 << New Column(pinList[j++], Character, Nominal);
);
pinList 配列ですべての列名を定義する場所。 pinList のエントリを複製するという事実を除いて、それは機能します(この場合、これは実際には悪いことではありません)。 「|」で区切られたデータを解析する別のループを実行しようとすると、実際の問題が発生します。そしてそれを新しい列に入れます。
(i = 1、i <= nrows(dt2)、i++、
one_test_result_list = words(column(dt2,"Test_Result") 、「|」);
(k = 1, k <= nitems(one_test_result_list), k++,
列 (dt2、pinList) = one_test_result_list;
);
);
最後の行は 1 回実行され、pinList の次のエントリが列が作成されたときにすべての名前が複製されたため、後ろに「2」が付いています。 これを機能させる方法がわかりません。 pinList 配列で必要なすべての名前を定義できますが、数値と文字の列タイプを交互に使用したいと考えています。
どんな助けでも大歓迎です! ありがとう!!
Re: ループで列を作成するそのバリエーションを試してみましたが、2 番目の新しい列行の前に j++ を配置しました。 また、if ステートメントを使用して、解析済みデータ リストをステップ実行しました。 だから私は次のようにそれらを組み合わせました:
為に( j = 1 、 j <= Nアイテム(ピンリスト) 、 j ++、
dt2 <<新しい列(ピンリスト[ j ] 、数値、連続、フォーマット( "一番" 、 12 ) ) ;
dt2 <<新しい列(ピンリスト[ j + 1 ] 、キャラクター、公称) ; // j+1 の列を作成します。
j ++; // その後、j=j+1 ずつ繰り返します。
) ;
為に(私= 1 、私<= N 行( dt2 ) 、私++、
one_test_result_list =言葉(桁( dt2 、 "テスト結果" ) [私]、 "|" ) ;
為に( j = 1 、 j <= Nアイテム( one_test_result ) 、 j ++、
もしも(モジュロ( j 、 2 ) == 1 、
桁( dt2、ピンリスト[ k ] ) [私] =番号( one_test_result_list [ k ])) ; // 奇数 j に対して実行
桁( dt2、ピンリスト[ k ] ) [私] = one_test_result_list [ k ] ; // 偶数 j に対して実行
);
);
) ;
これは完全に機能します。 したがって、数値結果が数値として出力され、文字が通常の形式であることを確認します。 手伝ってくれてどうもありがとう!!
Re: ループで列を作成するこんにちは。
あなたのスクリプトを正しく理解していれば、ループの本体内で j++ を使用することによって問題が発生すると思います.j++ は、ループが反復を完了した後にのみ j を反復するためです。これを回避する方法はいくつか考えられます。1 つの方法は、j++ を j+1 に置き換えてから、j++ の別の行を追加することです。もう 1 つの方法は、If() ステートメントを追加して、偶数と奇数の j に対して個別のコマンドを作成することです。
ループの本体内で i++ がどのように動作するかの例については、例 1 と 2 を参照してください。
これが役立つことを願っています。
名前のデフォルトはここ( 1 ) ;
dt2 =新しいテーブル( "dt2" 、行を追加( 20 ) ) ;
ピンリスト= { 「あ」 、 "B" 、 "C" 、 "D" 、 「え」 、 「フ」 } ;
為に( j = 1 、 j <= Nアイテム(ピンリスト) 、 j ++、
dt2 <<新しい列(ピンリスト[ j ] 、数値、連続、フォーマット( "一番" 、 12 ) ) ;
dt2 <<新しい列(ピンリスト[ j + 1 ] 、キャラクター、公称) ; // j+1 の列を作成します。
j ++; // その後、j=j+1 ずつ繰り返します。
) ;
為に( j = 1 、 j <= Nアイテム(ピンリスト) 、 j ++、
もしも(モジュロ( j 、 2 ) == 1 、
dt2 <<新しい列(ピンリスト[ j ] 、数値、連続、フォーマット( "一番" 、 12 ) ) 、 // 奇数 j に対して実行します。
dt2 <<新しい列(ピンリスト[ j ] 、キャラクター、公称) // 偶数 j に対して実行します。
)
) ;
// 例 1.
為に(私= 1 、私<= 10 、私++、
印刷する(私) ;
印刷する(私++ ) ;
) ;
// 例 2.
為に(私= 1 、私<= 10 、私++、
印刷する(私) ;
印刷する(私+ 1 ) ;
私++;
) ;