2014-10-10 41 views
1

不知何故,我只能找到显示如何添加一列的示例。如何在kdb中一次添加多个列?

所以我写了这个代码,它的工作原理,但我知道有一个更好的方法来做到这一点: 表t已经存在与填充数据的列,我需要添加最初为空的新列。

t: update column1:` from t; 
t: update column2:` from t; 
t: update column3:` from t; 
t: update column4:` from t; 

我试图使其成为一个功能:

colNames:`column1`column2`column3`column4; 
t:{update x:` from t}each colNamesList; 

但这只是添加一列,并把它称为X。

任何建议,以改善此代码将不胜感激。我必须添加比4列更多的东西,因此我的代码很长。谢谢!

回答

3

各种方式来实现这个....

q)newcols:`col3`col4; 

q)@[tab;newcols;:;`] 
col1 col2 col3 col4 
------------------- 
a 1 
b 2 
c 3 

也可以指定不同类型的

q)@[tab;newcols;:;(`;0N)] 
col1 col2 col3 col4 
------------------- 
a 1 
b 2 
c 3 

还是做了功能更新

q)![`tab;();0b;newcols!count[newcols]#enlist(),`] 
`tab 
+0

非常感谢你为你的彻底回复!我已经使用了函数更新,但是调用了@ []的函数是什么?我想知道它的名称,所以我可以阅读更多。 – Hopper06 2014-10-10 15:25:30

+0

这是“应用”功能(结合q在封面上做一些有用的事情 - 例如填充原子'与表格长度相同) http://code.kx.com/wiki/JB :QforMortals2 /功能#Functional_Forms_of_Amend – terrylynch 2014-10-10 15:50:00