式のリストこのようなリストを作成したいと思います。
LL = {parm1 = "x"、value1 = 5、parm2 = "y"、value2 = 3、...}
長さは異なる場合があるため、ループで実行し、変数名にループ インデックスを使用しようとしています。
しかし、そのターム (parm1 など) を作成するのに苦労しています。
これを行う最善の方法は何ですか?
Re: 式一覧別の方法を次に示します。 最終的な解決策に似ています。
// LL = {parm1 = "x", value1 = 5, parm2 = "y", value2 = 3, ...}
// Assume parameters and value labels are sequential
parm_list = {"x", "y", "z"};
value_list = {5, 3, 1};
pval_list = {};
for (i = 1, i <= nitems(parm_list), i++,
one_parm = evalinsert("\[parm^i^ = "^parm_list[i]^"]\");
one_val = evalinsert("\[value^i^ = ^value_list[i]^]\");
insertinto(pval_list, parse(one_parm));
insertinto(pval_list, parse(one_val));
);
pval_list;Re: 式一覧必要に応じて、連想配列またはネストされた連想配列のリストを作成できるように思えます。 そうすれば、データ構造を作成するために文字列を解析する必要がなくなり、読みやすくなります (文字列を解析して変数を作成すると、それらを実行したり、マウスオーバーして表示したりすることができなくなります. )
Names Default to here(1);
testparam1 = 1;
fitparam1 = 2;
Rsq1 = 3;
testparam2 = 4;
fitparam2 = 5;
Rsq2 = 6;
//list of associative arrays
Laa = {};
//param1 insert
insert into(Laa, associative array({"TestParam", "FitParam", "Rsq"}, Evallist({testparam1, fitparam1, Rsq1})) );
//param2 insert
insert into(Laa, associative array({"TestParam", "FitParam", "Rsq"}, Evallist({testparam2, fitparam2, Rsq2})) );
show(Laa[1]["TestParam"], Laa[2]["TestParam"]);
//nested associative arrays
Naa = associative array();
//param1 insert
Naa["name1"] = associative array({"TestParam", "FitParam", "Rsq"}, Evallist({testparam1, fitparam1, Rsq1}));
//param2 insert
Naa["name2"] = associative array({"TestParam", "FitParam", "Rsq"}, Evallist({testparam2, fitparam2, Rsq2}));
show(Naa["name1"]["FitParam"], Naa["name2"]["FitParam"]);
戻り値
Laa[1]["TestParam"] = 1;
Laa[2]["TestParam"] = 4;
Naa["name1"]["FitParam"] = 2;
Naa["name2"]["FitParam"] = 5;
ネストされたものの利点は、順序が変化し、位置が重要になることが予想される場合にのみです。
Re: 式一覧どちらが最高かは評価しません。しかし、両方の例がすべての仕組みを理解するのに役立つことがわかりました。
最終的に、私のコードは次のようになりました。注: ここで定義していないものがあるため、これはそのままでは実行されません。
これは、インデックス k のループにあります。リストのリストには、すべての結果が格納されます。
LList = {};
に挿入(Lリスト、パース( 「テストパラム」 ||チャー(k)|| "=\!"" ||モード[k]|| "\!"" )); // テスト パラメータ名
に挿入(Lリスト、パース( 「フィットパラム」 ||チャー(k)|| "=\!"" ||dt統計[ 1 、 1 ]|| "\!"" )); // フィット パラメータ名
に挿入(Lリスト、パース( "RSQ" ||チャー(k)|| "=" ||チャー(dtStats[ 1 、 3 ]))); // Rsquared
Re: 式一覧最良の方法?" JMPコミュニティで喧嘩を始めようとしていますか?
この問題を解決する方法は複数あります。 どの方法が最適かは、いくつかの基準に基づいて決定されます。 Jim のソリューションとは異なるが、必ずしもより優れているとは限らない別のソリューション候補を次に示します。
Names Default To Here( 1 );
// List the variable names
name list = { "Cool", "Awesome", "Bad" };
// List the variable values
value list = { 1, 2, 3 };
// Prepare an empty container for assignments
name value list = {};
// Make the list of assignments
For( i = 1, i <= N Items( name list ), i++,
// Start with function with no arguments
assign expr = Expr( Assign() );
// Add first argument
Insert Into( assign expr, name list[i] );
// Add second argument
Insert Into( assign expr, value list[i] );
// Add function to assignment list
Insert Into( name value list, Name Expr( assign expr ) );
);
Show( name value list );
今、あなたには選択肢があります。 (いつでも別の瞬間があるに違いありません。) あなたが選択します。
Re: 式一覧リストを生成する同様のコードを次に示します。
Names Default To Here( 1 );
dt = New Table( "Untitled 36", Add Rows( 3 ),
New Column( "Column 1", Character, "Nominal",
Set Values( {"1", "2", "3"} ) ) );
NamesList = {"Cool", "Awsome", "Bad"};
ValuesList = Column( dt, 1 ) << get values;
NamesValuesList = {};
// Build the Value Labels List
For( i = 1, i <= N Items( NamesList ), i++,
Insert Into( namesvalueslist,
Parse( ValuesList[i] || " = \!"" || NamesList[i] || "\!"" ) )
);