我正在尝试加载 csv 数据来测试我编写的一些 kdb+ q 函数。将数据加载到表并将一行翻转到字典中后,引用的数据中出现意外的逗号。
我创建了一个非常简单的 csv 文件,名为 testdata.txt:
a,b,c,d,e,f,g
1,2,3,4,5,6,7
10,11,12,13,14,15,16
Run Code Online (Sandbox Code Playgroud)
我像这样加载 csv:
td: ("JJJJJJJ";1#",") 0: `:data/testdata.txt
Run Code Online (Sandbox Code Playgroud)
结果:
a b c d e f g
--------------------
1 2 3 4 5 6 7
10 11 12 13 14 15 16
Run Code Online (Sandbox Code Playgroud)
然后我提取一行并将其翻转到字典中:
tdic: flip 1#td
Run Code Online (Sandbox Code Playgroud)
到目前为止,一切都很好:
a| 1
b| 2
c| 3
d| 4
e| 5
f| 6
g| 7
Run Code Online (Sandbox Code Playgroud)
然后我尝试引用字典中的一项,并且在该值之前有一个逗号。
q)tdic `a
,1
Run Code Online (Sandbox Code Playgroud)
由于逗号,我的数据无法用于任何测试目的,至少如果我将其翻转到字典中。我很确定我做错了什么,因为我没有在任何地方看到这个问题的记录。
如果你检查每个条目的类型,tdic你会发现它们实际上是列表(正整数):
type each tdic
a| 7
b| 7
c| 7
d| 7
e| 7
f| 7
g| 7
Run Code Online (Sandbox Code Playgroud)
您可以使用索引来获取原子而不是列表:
show tdic:td[0]
a| 1
b| 2
c| 3
d| 4
e| 5
f| 6
g| 7
type each tdic
a| -7
b| -7
c| -7
d| -7
e| -7
f| -7
g| -7
Run Code Online (Sandbox Code Playgroud)
输出不再是列表:
q)tdic`a
1
Run Code Online (Sandbox Code Playgroud)