要形成由相同行组成的矩阵,可以使用
x:1 2 3
2 3#x,x
按预期生成(1 2 3i;1 2 3i)
。但是,试图概括这一点:
2 (count x)#x,x
虽然类型相同,但会产生type
错误:
(type 3) ~ type count x
返回1b
。为什么这不起作用?
答案 0 :(得分:1)
以下情况应该有效。
q)(2;count x)#x,x
1 2 3
1 2 3
如果查看两个语句的解析树,可以看到第二个语句的评估方式不同。在第二个中,count的结果作为参数传递给#。
q)parse"2 3#x,x"
#
2 3
(,;`x;`x)
q)parse"2 (count x)#x,x"
2
(#;(#:;`x);(,;`x;`x))
答案 1 :(得分:1)
如果您正在寻找构建具有相同行的矩阵,那么最好使用它们 rownum#enlist x
q)x:100000?100
q)\ts do[100;v1:5 100000#x,x]
157 5767696j
q)\ts do[100;v2:5#enlist x]
0 992j
q)v1~v2
1b
我发现这更自然(而且更快!)