Ant*_*zée 2 r matrix logical-operators r-factor
非常简单的问题,我想以一般的方式问,因为它似乎是一个经常出现的问题,我很乐意找到一种通用的方法来做到这一点.例如,问题是将逻辑矩阵转换为因子矩阵,但保持矩阵结构:行数和列数,列号,rownames.我想要更直接的东西
X2 <- matrix(as.mode(X), ncol=ncol(X));
rownames(X2) <- rownames(X) ...
Run Code Online (Sandbox Code Playgroud)
我已经在某些情况下找到了这个问题,所以我把它放在这里,但仍有一些问题......
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)
Run Code Online (Sandbox Code Playgroud)
B. 2.数字 - >逻辑:直接使用条件
NumMatrix <- matrix(1:6, ncol=2)
rownames(NumMatrix) <- LETTERS[1:3]; colnames(NumMatrix) <-LETTERS[11:12]
(BoolMatrix <- NumMatrix == 0)
Run Code Online (Sandbox Code Playgroud)
C.数字< - >字符:不能比2个衬垫更好,直接改变模式工作(也可以在逻辑和数字之间工作,但上面的解决方案更优雅)
CharMatrix <- NumMatrix
mode(CharMatrix) <-"character"
print(CharMatrix)
Run Code Online (Sandbox Code Playgroud)
最后的解决方案("2班轮")实际上适用于与因素无关的任何事情,我遇到了困难......
任何的想法 ?:-)
使用structure,将属性列表附加到任意对象.对于矩阵,您需要的属性是dim,也可以是dimnames.
例如转换X为因子矩阵:
m <- structure(factor(X), dim=dim(X), dimnames=dimnames(X))
Run Code Online (Sandbox Code Playgroud)