Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将列名传递到函数中的kdb_Kdb - Fatal编程技术网

将列名传递到函数中的kdb

将列名传递到函数中的kdb,kdb,Kdb,我有一张桌子 t: flip `ref`a`b`c`d`e!(til 10;10?10;10?10;10?10;10?10;10?10) ref a b c d e 0 5 3 3 9 1 1 1 9 0 0 0 2 5 9 4 1 7 3 0 0 5 1 3 4 2 6 8 9 3 5 3 2 0 6 6 6 7 6 4 9 8 7

我有一张桌子

t: flip `ref`a`b`c`d`e!(til 10;10?10;10?10;10?10;10?10;10?10)

ref a   b   c   d   e
0   5   3   3   9   1
1   1   9   0   0   0
2   5   9   4   1   7
3   0   0   5   1   3
4   2   6   8   9   3
5   3   2   0   6   6
6   7   6   4   9   8
7   4   8   9   7   2
8   7   0   8   8   3
9   7   9   0   4   8
如何设置a、b、c、b列中的所有值,。。如果它们的值等于列ref中的值而不必对每列执行单行更新,则返回0Ni

所以taht看起来有点像(返回错误:type)


您可以重用下一个代码段

t: flip `ref`a`b`c`d`e!(til 10;10?10;10?10;10?10;10?10;10?10);
columns: `a`b`c`d`e;
![t;();0b;columns!{parse "?[",x,"=ref;0Ni;",x,"]" }each string columns]
更新的列被放入
列中。

使用功能更新,将每列
X
映射到值
?[X=ref;0Ni;X]
,您可以重用下一个代码段

t: flip `ref`a`b`c`d`e!(til 10;10?10;10?10;10?10;10?10;10?10);
columns: `a`b`c`d`e;
![t;();0b;columns!{parse "?[",x,"=ref;0Ni;",x,"]" }each string columns]
更新的列被放入
列中。

使用函数更新,将每列
X
映射到值
?[X=ref;0Ni;X]

前面的答案涉及到字符串,这通常会变得非常混乱。为了避免这种情况,可以通过将列名作为符号传递来构建查询。可使用以下功能建立功能选择词典:

q){y!enlist[({?[y=x;0Ni;y]};x)],/:y:(),y}[`ref;`a`b`c]
a| ({?[y=x;0Ni;x]};`ref) `a
b| ({?[y=x;0Ni;x]};`ref) `b
c| ({?[y=x;0Ni;x]};`ref) `c
初始列是
x
,它允许将任意数量的列作为
y
传递以进行比较

然后可以将其添加到功能选择中:

q)![t;();0b;{y!enlist[({?[y=x;0Ni;y]};x)],/:y:(),y}[`ref;`a`b`c]]
ref a b c d e
-------------
0   4 5 8 4 8
1   2 6   9 1
2   8 4 7 2 9
3   0 1 2 7 5
4   5 3   0 4
5   8 3   1 6
6   5 7 4 9 6
7   2 8 2 2 1
8     2 7 1 8
9   6 1 8 8 5

前面的答案涉及使用字符串,这通常会变得非常混乱。为了避免这种情况,可以通过将列名作为符号传递来构建查询。可使用以下功能建立功能选择词典:

q){y!enlist[({?[y=x;0Ni;y]};x)],/:y:(),y}[`ref;`a`b`c]
a| ({?[y=x;0Ni;x]};`ref) `a
b| ({?[y=x;0Ni;x]};`ref) `b
c| ({?[y=x;0Ni;x]};`ref) `c
初始列是
x
,它允许将任意数量的列作为
y
传递以进行比较

然后可以将其添加到功能选择中:

q)![t;();0b;{y!enlist[({?[y=x;0Ni;y]};x)],/:y:(),y}[`ref;`a`b`c]]
ref a b c d e
-------------
0   4 5 8 4 8
1   2 6   9 1
2   8 4 7 2 9
3   0 1 2 7 5
4   5 3   0 4
5   8 3   1 6
6   5 7 4 9 6
7   2 8 2 2 1
8     2 7 1 8
9   6 1 8 8 5

谢谢你,安东。一个问题。。。这是什么意思![t;();0b;do?我可以看到我得到了一些包含函数(?).但我不知道第一部分是做什么的@chrise。这个结构被称为。实际上,与通常的
update
语句没有太大区别,但更灵活。因为它允许使用列名/值字典来定义要更新的列。有一个问题…什么是![t;();0b;do?我可以看到我得到了一些包含函数(?)的dict。但是我不知道第一部分是做什么的@chrise。这个结构被调用。实际上,与通常的
update
语句没有太大区别,但更灵活。因为它允许使用列名/值字典来定义要更新的列