3

たとえば、私は持っています:

x: (`a`b!(1;2); (); `a`b!(3;4))

を削除したいと思い()ます。?(マッチ)を使ってみた

x[x ? not ()]

しかし、それはちょうど与え()ます。

正しい表現は?

バックグラウンド

peach私は一連のクエリを実行するためによく使用しますが、多くの場合、不足しているデータが(). ()したがって、を削除して、素敵なテーブルに戻したいと思います。

4

4 に答える 4

4

ええと、(辞書ではなく) 既にテーブルを返している場合はraze、空のリストを取り除くのに十分です。技術的には追加されますが、リストに空のリストを追加すると、元のリストが取得されます。テーブルは単に辞書のリストであることを思い出してください。したがって、ここでも同様です。

//I'm enlisting your dictionaries,
//so that they become tables and then raze
q)raze @[x; 0 2; enlist]   
a b
---
1 2
3 4

raze f each xorなどのスニペットraze f peach xは非常に一般的であり、これがユースケースに最適なイディオムだと思います。

于 2014-04-21T13:13:01.980 に答える
2

同様にexceptを使用できます:

q)x except 1#()
a b
---
1 2
3 4
于 2014-04-17T13:22:41.493 に答える
2

() は空のリストです。したがって、カウントはゼロです。したがって、次を使用できます。

q)x where not 0 = count each x
a b
---
1 2
3 4
于 2014-04-17T13:15:28.873 に答える