假设您有一个大小为 6x4 的逻辑值矩阵:
set.seed(4)
mat <- matrix(sample(c(T, F), 24, replace = T), ncol = 4)
mat
# [,1] [,2] [,3] [,4]
# [1,] FALSE TRUE FALSE FALSE
# [2,] TRUE FALSE FALSE TRUE
# [3,] TRUE TRUE FALSE TRUE
# [4,] TRUE FALSE FALSE TRUE
# [5,] TRUE TRUE FALSE TRUE
# [6,] FALSE FALSE TRUE TRUE
如何将其强制为不同类别的数据矩阵?例如,如果您希望它是整数,使得
FALSE
被强制为 0
并且 TRUE
被强制为 1
,您可以尝试 as.integer
:
as.integer(mat)
# [1] 0 1 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 1 0 1 1 1 1 1
这不起作用,因为它还会将矩阵转换为一维向量。然后,您可以重建相同大小的矩阵,但这似乎是一种不优雅或间接的方法。您可以将矩阵中的数据强制转换为另一个类,而无需重建矩阵吗?
matrix(as.integer(mat), ncol = ncol(mat))
# [,1] [,2] [,3] [,4]
# [1,] 0 1 0 0
# [2,] 1 0 0 1
# [3,] 1 1 0 1
# [4,] 1 0 0 1
# [5,] 1 1 0 1
# [6,] 0 0 1 1
最简单的方法是:
> mat*1
[,1] [,2] [,3] [,4]
[1,] 0 1 0 0
[2,] 1 0 0 1
[3,] 1 1 0 1
[4,] 1 0 0 1
[5,] 1 1 0 1
[6,] 0 0 1 1