将逻辑矩阵转换为整数矩阵。

3

我有以下的 逻辑 矩阵:

k <- matrix(c(T,T,F,F,T,F,T,F,T,T,F,F,T,F,T,F,T,T,T,T,F,F,F,F,F), 5)

然而,当我执行以下操作时:

z <- as.integer(k)

我得到了一个整数向量而不是一个整数矩阵:

[1] 1 1 0 0 1 0 1 0 1 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0 0

我想要一个像下面这样的矩阵:-
k <- matrix(c(1,1,0,0,1,0,1,0,1,1,0,0,1,0,1,0,1,1,1,1,0,0,0,0,0), 5)

提前致谢。

4个回答

4

我们可能需要使用[]来保持维度不变。

z <- k
z[] <- as.integer(k)

或者另一个选择是进行 dim 赋值

z <- as.integer(k)
dim(z) <- dim(k)

或者不进行 dim 改变,只需乘以 1 即可强制转换为数字类型

z <- k * 1

4

使用一元运算符+

+k
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    0    0    0    0
## [2,]    1    1    0    1    0
## [3,]    0    0    1    1    0
## [4,]    0    1    0    1    0
## [5,]    1    1    1    1    0

2
另一个选择:
storage.mode(k) <- "integer"

1
k <- matrix(c(T,T,F,F,T,F,T,F,T,T,F,F,T,F,T,F,T,T,T,T,F,F,F,F,F), 5)
res <- +k
res
#>      [,1] [,2] [,3] [,4] [,5]
#> [1,]    1    0    0    0    0
#> [2,]    1    1    0    1    0
#> [3,]    0    0    1    1    0
#> [4,]    0    1    0    1    0
#> [5,]    1    1    1    1    0

本文档由reprex package (v2.0.1)于2021年10月04日创建


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接