KDB の配列範囲内で変数を使用できないのはなぜですか?
test:1 2 3 4 5
この例はうまくいきません:
pos:3;
test[1 pos]
しかし、このように動作します
test[1 3]
ご覧のとおり、test[1 3] を使用すると、(1 3) はリストです。したがって、ベクトル変数にはリストが必要です。
q) list1:1 3
q) test[list1]
したがって、次を使用する必要があります。
q)n:3
q)list1:(1;n)
q)test[list1]
q)test[(1;n)] / alternate way
セミコロンのみが機能しない理由と、角かっこ '()' が必要な理由の詳細については、この投稿に対する私の回答を確認してください。
あなたが求めていることを理解するには、次のことを考慮してください。
1 2 3 7
これは整数の単純なリストです。今考えてみましょう:
2 3
はベクトルa
です。上記のインデックスはa
. 簡単。2 3
そのリストを変数として持ちたいとしましょう
b:2 3 ab //動作します!
具体的には、リストから範囲を取得する方法について質問しています。これは、KDB のリスト内の要素の範囲を取得する方法でカバーされていますか?
その答えでは、変数を使用してインデックス リストを作成し、結果を使用してインデックスを作成します。a