У меня есть таблица в R, где имена строк (по умолчанию) A, B, C, ... и имена столбцов 1,2,3,4, ... как назначено. Например, вывод
x <- as.table(matrix(c(2,20,3,4,2,5,8,1,3),nrow=3,ncol=3,byrow=TRUE))
colnames(x) <- seq(1,ncol(x))
x
Теперь я хотел бы переставить таблицу с помощью матрицы P, которую я уже нашел, содержащей только 1 и 0 (точка в том, что A %*% P
будет переставить столбцы A
, чтобы увеличить его диагональ). В этом случае для x
вы можете получить P как
P <- matrix(c(0,0,1,1,0,0,0,1,0),nrow=3,byrow=T)
Примечание. P будет иметь только одну '1' на строку и столбец, остальные - '0'. Моя проблема: если вы сделаете что-то вроде
Y <- x %*% P
, вы увидите, что, хотя диагонали расположены правильно, имена столбцов из x были заменены именами столбцов матрицы из P ([, 1] [, 2] [, 3] в данном случае).
Как выполнить перестановку (x %*% P
), сохранив имена столбцов из x
в правильном заказ? То есть имя столбца следует за столбцом при его перемещении. Таким образом, в этом случае имена столбцов будут 2 3 1
.