R语言如何将logical矩阵转换为integer矩阵且保留原有矩阵结构
R中as.integer()默认会将输入对象强制转换为一维向量,因此直接对矩阵调用该方法会丢失原有矩阵结构,你可以通过以下方法实现保留结构的类型转换:
方法1:直接修改存储模式(效率最高,直接修改原对象)
通过修改矩阵的存储模式实现类型转换,不会改变矩阵的维度、行列名等所有原有属性:
storage.mode(k) <- "integer"
方法2:生成新的整数矩阵(不修改原逻辑矩阵)
如果你需要保留原逻辑矩阵,可以选择以下两种写法生成新的整数矩阵:
- 写法1:手动指定原矩阵维度重建
z <- matrix(as.integer(k), nrow = nrow(k), ncol = ncol(k))
- 写法2:通过子集赋值保留结构
# 先复制原矩阵的结构 z <- k # 对所有元素赋值转换后的值,保留原有矩阵结构 z[] <- as.integer(z)
你可以通过class(z)和dim(z)验证转换结果,返回的类型为matrix,维度和原逻辑矩阵完全一致。
内容的提问来源于stack exchange,提问作者Shawn Brar
相关产品推荐
相关产品推荐

