【发布时间】:2013-08-06 04:09:53
【问题描述】:
我想以一般方式提出的非常简单的问题,因为它似乎是一个反复出现的问题,我很高兴找到一种通用的方法来解决这个问题。 问题是将逻辑矩阵转换为因子矩阵,例如,但要保持矩阵结构:行数和列数、列名、行名。我想要比
更直接的东西X2 <- matrix(as.mode(X), ncol=ncol(X));
rownames(X2) <- rownames(X) ...
我已经在某些情况下解决了这个问题,所以我把它放在这里,但还有一些问题......
A. into (-->) 因素是我没有一个简单的方法。
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. numeric --> logical: 直接使用条件
NumMatrix <- matrix(1:6, ncol=2)
rownames(NumMatrix) <- LETTERS[1:3]; colnames(NumMatrix) <-LETTERS[11:12]
(BoolMatrix <- NumMatrix == 0)
C.数字 字符:不能比 2 班轮做得更好,直接改变模式有效(也可以在逻辑和数字之间工作,但上述解决方案更优雅)
CharMatrix <- NumMatrix
mode(CharMatrix) <-"character"
print(CharMatrix)
最后一个解决方案(“2 班轮”)实际上适用于与因素无关的任何事情,我遇到了困难......
有什么想法吗? :-)
【问题讨论】:
-
我认为
BoolMatrix应该更像:BoolMatrix <- matrix(c(TRUE,FALSE),nrow=3,ncol=2)否? -
没有
mode=factor -
@mnel - 我正要输入相同的内容,但随后@HongOoi 的答案中的
m为is.factor和is.matrix返回TRUE。 -
@thelatemail -- 我的评论是真实的但无关紧要(因子的模式是“数字”)
-
我仍然认为澄清
mode的意思会更好(与R这个词的定义相比
标签: r matrix logical-operators r-factor