替换R中的大矩阵中的值以生成单位矩阵

时间:2016-05-17 19:53:31

标签: r matrix

我正在尝试将大型稀疏矩阵(维度:4445 x 2621)转换为单位矩阵。行名和列名是字符串。这个想法是所有1和以上的值应该等于1。

例如:

Mat = [5,0,1
       10,11,0
       3,0,0]

将成为,

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

我使用的代码是

B[B >= 1] = 1

我还使用了以下内容:

B = replace(B,B>=1, 1)

> typeof(B)
[1]"character" 

我尝试将其更改为as.numeric(B)以将字符值转换为数字,但这只是使它成为一个大数字。我确定这是因为值是字符。请指出我的错误。

2 个答案:

答案 0 :(得分:0)

您只需使用条件"大于0"来分配您要分配的范围,如下所示:

Mat = rbind(c(5,0,1),c(10,11,0),c(3,0,0))
Mat1 <- Mat
Mat1[Mat > 0] <- 1

结果:

Mat1
     [,1] [,2] [,3]
[1,]    1    0    1
[2,]    1    1    0
[3,]    1    0    0

答案 1 :(得分:-1)

storage.mode(B) = "numeric"
B[B>=1] = 1
B[B<1] = 0