在 R 中,如何更改矩阵中数据的类别?

问题描述 投票:0回答:1

假设您有一个大小为 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
r matrix coercion
1个回答
0
投票

最简单的方法是:

> 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
© www.soinside.com 2019 - 2024. All rights reserved.