2014-10-10 18 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