数式がFORループ内で機能しないこんにちは、
さまざまな臨床研究からのデータ収集を自動化することを目的とした顧客と協力して、アクションレコーダーを使用して適切なスクリプト行を取得しました。
今、私はリストとループを使用してスクリプトを単純化し、より大きな使用のためにそれを一般的にしています。
私は58行目までそれを行うことができました。 行58〜61で、FORループと次の式を使用して、行63〜100で何が起こるかを再現しようとしています。
For( i = 1, i <= N Items( colList ), i++,
Data Table( "Summary with Dose=0" ) <<
New Column( colList_Sum_3[i],
Numeric,
"Continuous",
Format( "Best", 12 ),
formula( colList_Sum_1[i] - colList_Sum_2[i] )
)
);
(リストに基づいて)適切な列を作成しますが、各列の数式は作成しません。
Eval / Exprを試してみましたが、いつどのように使用するかわからないことを認めなければなりません。
助けてくれてありがとう。
エマニュエル
Re:数式はFORループ内では機能しませんこれはあなたが考えていたことをしますか? 式の処理を使用しなくても実行できる場合がありますが、特に問題のある列名を処理する必要がある場合(たとえば、数学演算子や統計予約語が含まれている場合)、このアプローチの方が堅牢であることがわかります。 アイデアは、列を式として必要とする結合メッセージへの2つの引数を扱い、列参照をそれらに挿入することによってそれらを構築し(上記の問題のために名前を使用しないでください)、次にそれらをに挿入することです。加入とのメッセージ代わりの(あなたはそれを入れることができますExprしたがって、式も評価されます)。 繰り返し発生するテーマの1つは、名前Expr使用している変数が完全に評価されないようにするため(つまり、変数の内容を式として扱いたい場合は、評価された値には関心がありません)。 お役に立てれば。
ドン
Re:数式はFORループ内では機能しませんこんにちはエマニュエル、
あなたは少しだけずれています。 添付のスクリプトを試してください。 サンプルデータで機能しているようです。修正は//代わりにこれを試してくださいとコメントされています。 元のコードはコメント化されています。
一番、
ジェイソン
Re:数式はFORループ内では機能しません正しいスクリプトで再投稿
Re:数式はFORループ内では機能しませんこんにちはドン、スクリプトで何か変更しましたか? 元のファイルを変更せずにコピーして貼り付けるか、見逃したと思います。
Re:数式はFORループ内では機能しませんこんにちはジェイソン、
数式を含む列を返します:Column(colList_Sum_1 [i])-/ * ### * / Column(colList_Sum_2 [i])/ * ### * /
ただし、計算は行われません。
エマニュエル
Re:数式はFORループ内では機能しません申し訳ありませんが、エマニュエル、
最初に元のスクリプトを投稿しました。 編集したスクリプトで再投稿しました。
ドン
Re:数式はFORループ内では機能しません編集したスクリプトの76行目まですべてが機能するはずです。 これを超えて、上記のループで行ったのと同じ方法で問題を解決できるようです。結合のためのドンの式処理が好きです。 これは検討する価値があります。 まだ列リストと列名を処理する必要があるため、両方のスクリプトからアイデアを取得できる可能性があります。スクリプトの下位37行を修正したアップデートを本日遅くに送信します。
Re:数式はFORループ内では機能しませんこんにちはジェイソン、
編集したスクリプト行の69〜76行目では計算が返されません
For( i = 1, i <= N Items( colList ), i++,
Data Table( "Summary with Dose=0" ) << New Column( colList_Sum_3[i],
Numeric,
"Continuous",
Format( "Best", 12 ),
formula( Column( colList_Sum_1[i] ) - Column( colList_Sum_2[i] ) )
)
);
明確化のために、行69-76(元のスクリプトでは58-61)は、行78-115(元のスクリプトでは63-100)を置き換えることを目的としています。
スクリプトの残りの部分は問題ありません。69〜76行目(元のスクリプトでは58〜61行目)でスタックしています。
Re: FOR ループ内では数式が機能しません申し訳ありません、Emanuel。コーヒーが足りなかったのかもしれません。私が意図した構文は :As Column() です。最終テーブルをチェックしたところ、数式は予想どおりに列を区別しているようです。数式エディタで意味のある新しい列に数式を残す、より良い解決策があるかもしれません。列の数式を持つことは重要ですか、それともマトリックスを構築して値を設定できますか?
For( i = 1, i <= N Items( colList ), i++,
Data Table( "Summary with Dose=0" ) << New Column(
colList_Sum_3[i],
Numeric,
"Continuous",
Format( "Best", 12 ),
formula(:As Column(colList_Sum_1[i])-:As column(colList_Sum_2[i]))
)
);