Очень простой вопрос, который я хочу задать в общем виде, потому что это кажется повторяющейся проблемой, и я был бы рад найти общий способ сделать это. Проблема состоит в том, чтобы преобразовать матрицу логических элементов, например, в матрицу факторов, например, но сохраняя структуру матрицы: количество строк & столбцов, столбцов, имен ростов. Я хотел бы что-то более простое, чемПреобразование матрицы из режима A в режим B
X2 <- matrix(as.mode(X), ncol=ncol(X));
rownames(X2) <- rownames(X) ...
я уже разобрался с этой проблемой в некоторых случаях, так что я положил его здесь, но остаются некоторые вопросы ...
А. в (->) факторы - это тот, с которым у меня нет простого способа сделать.
B. 1. - логические выражения> Числовой: использует '+0' трюк
BoolMatrix <- matrix(c(TRUE,FALSE),nrow=3,ncol=2)
rownames(BoolMatrix) <- LETTERS[1:3]; colnames(BoolMatrix) <-LETTERS[11:12]
(NumMatrix <- BoolMatrix + 0)
B. 2. числовую -> логична: используется непосредственно условие
NumMatrix <- matrix(1:6, ncol=2)
rownames(NumMatrix) <- LETTERS[1:3]; colnames(NumMatrix) <-LETTERS[11:12]
(BoolMatrix <- NumMatrix == 0)
C . numeric < -> символ: не может работать лучше, чем 2 лайнера, напрямую меняя режим работы (а также будет работать между логическими и численными, но более сложные решения более элегантны)
CharMatrix <- NumMatrix
mode(CharMatrix) <-"character"
print(CharMatrix)
последнее решение («2 лайнер») работает фактически для всего, что не связано с факторами, для которых я испытываю трудности ...
Идея? :-)
Я думаю, что 'BoolMatrix' должно быть нечто большее, как:' BoolMatrix <- матрица (c (TRUE, FALSE), nrow = 3, ncol = 2) 'no? – thelatemail
нет 'mode' =' factor' – mnel
@mnel - я собирался ввести одно и то же, но тогда 'm' в ответе @HongOoi возвращает' TRUE' для 'is.factor' и' is. matrix'. – thelatemail