如何创建函数来重复列表中的向量 n 次?

how to create function to repeat a vector in a list n times?

我有以下向量:

 v:(1,-1)

我想创建一个函数,在列表中重复此向量 n 次示例:

f[v,3] results in ((1 -1);(1 -1);(1 -1))

谁能帮我定义这个函数?

您可以为此使用 # take 函数,例如

q)f:{y#enlist x}

q)f[v;3]
1 -1
1 -1
1 -1

也可以在不征集向量的情况下完成,例如

q)3 2#v
1 -1
1 -1
1 -1

或者更一般地说:

q)f:{(y;count x)#x}
q)f[v;3]
1 -1
1 -1
1 -1

如果您不想创建新函数,可以这样做:

q)#[3;enlist v]
1 -1
1 -1
1 -1