連想配列をスライスしますか?Fox 行列インデックスでは、0 を使用して完全なスライスを取得できます。
m = [ 1 2 , 3 4];
m[0,1]; // [1, 3]
データ テーブルの場合も、同様に機能します。
test = new table("test", <BR />add rows(10), <BR />new column("col1",Character, set each value({"A","B","C"}[random integer(3)])),<BR />new column("col2", set each value(random uniform(5))));
test[4,0]
リストのリストの場合、これは不可能です。
list= {{"A", 3},{"B", 5}};
list[0,1]Sure, there are many lists of lists where such slicing is not possible, like {{"A", 3},{"B"}}.
一方、それを許可するリストは数多くあります。
本当に興味深いのは、連想配列の連想配列です。
リストと同様に、連想配列の概念は、マトリックスやデータ テーブルでできることよりも柔軟性が高いため、スライスは機能しません。ただし、リストと同様に、スライスが機能する連想配列もあります...
JSL には、この作業を実行するmyAssociativeArray[0, "重み"]のような関数がありますか?
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
dt << Save( "$DOWNLOADS/test.json" );
// for sake of simplicity we accept to lose 1x ROBERT
myIndex=dt[0,"name"]
myAssociativeArray = Associative Array(myIndex,ParseJSON(Load text file ( "$DOWNLOADS/test.json")));
<BR />// cool, but not what we want
mapToWeight = Transform Each({{key, value}}, aa, value["weight"]);
SliceAssociativeArray= Function({aa, indexname},
Transform Each({value}, aa << get values, value[indexname])
);
SliceAssociativeArray(myAssociativeArray ,"weight") //myAssociativeArray [0, "weight"]
自動化とスクリプトRe: 連想配列をスライスしますか?データ構造によって用途は異なりますが、連想配列の場合は(私の考えでは)一意のキーを保存し、それらのキーの値を高速に取得することを意味します(キーと値のペアを保存します)。Transform Eachは、出力を変更するだけで使用できる優れたオプションの1つです。
weights = Transform Each({{key, value}}, aa, Output("List"),
value["weight"]
);
Re: 連想配列をスライスしますか?もう一つのクールなトリック - 非常に便利:)
使いやすさから考えると
weights = Transform Each({{key, value}}, aa, Output("List"),
value["weight"]
);そして
Transform Each({value}, aa << get values, value["weight"])元の投稿からのものは同等の価値である
... aa[0, "重量"]からかなり離れています
すべてのaa[0,"2024",0,0,"date"] を取得したいと想像してください。
Re: 連想配列をスライスしますか?これが何を「クエリ」するべきかわかりません。aa [0,"2024",0,0,"date"]。 「0」インデックスのみを取得したい場合は、キーが列名で値が行値のリストになるように、値を連想配列に格納できます。
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
aa = Associative Array();
For Each({colname}, dt << Get Column Names("String"),
aa[colname] = As List(Column(dt, colname) << get values);
);
通常、テーブルのようにアクセスできるテーブルのような形式でデータを保存する場合は、(プライベート) JMP データ テーブルを使用します。
Re: 連想配列をスライスしますか?いい指摘ですね:):)