# Permutation function which allows for repetitions

I want to permute a matrix based on some permutation cycle which is not known beforehand. A function searches through the matrix and returns the pair of indices $$i,j$$ of the first entry which equals some specific value. Now, I want to permute the matrix such that that column $$j$$ appears first in the matrix. I would use the function Cycles[{{1,j}}], but it doesn't work if the index $$j$$ equals 1 (since I want to bring it to the first column).

Is there a way to create a general permutation function such that in the situation that $$j=1$$, it just returns the identity permutation (so it doesn't permute the matrix)?

You want to exchange column 1 with column j of a matrix. You can use Part to achieves this. Here is an example:

mat = Array[Subscript[a,  #1, #2] &, {3, 3}]
j = 3;
mat[[All, {j, 1}]] = mat[[All, {1, j}]];
mat // MatrixForm • Most importantly to the OP is that this works also for j=1. – Henrik Schumacher Mar 30 at 10:59
• @ Henrik Schumacher Does it not? – Daniel Huber Mar 30 at 11:05
• No, it does. I just meant to point this out once more. =) – Henrik Schumacher Mar 30 at 11:13