gpt4 book ai didi

r - 将矩阵从模式 A 转换为模式 B

转载 作者:行者123 更新时间:2023-12-04 12:12:42 24 4
gpt4 key购买 nike

我想以一般方式提出的非常简单的问题,因为它似乎是一个反复出现的问题,我很乐意找到一种通用的方式来解决这个问题。例如,问题是将逻辑矩阵转换为因子矩阵,但保持矩阵结构:行数和列数、列名、行名。我想要比

更直接的东西
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. numeric --> logical: 直接使用条件

NumMatrix <- matrix(1:6, ncol=2)
rownames(NumMatrix) <- LETTERS[1:3]; colnames(NumMatrix) <-LETTERS[11:12]
(BoolMatrix <- NumMatrix == 0)

C. numeric <--> character:不能比 2 liner 做得更好,直接改变模式可以工作(也可以在逻辑和数字之间工作,但上面的解决方案更优雅)

CharMatrix <- NumMatrix
mode(CharMatrix) <-"character"
print(CharMatrix)

最后一个解决方案(“2 liner”)实际上适用于与因素无关的任何事情,我对此有困难......

有什么想法吗? :-)

最佳答案

使用结构,它将属性列表附加到任意对象。对于矩阵,您需要的属性是 dim 和可选的 dimnames

例如,将 X 转换为因子矩阵:

m <- structure(factor(X), dim=dim(X), dimnames=dimnames(X))

关于r - 将矩阵从模式 A 转换为模式 B,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18071665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com