我正在尝试将大型稀疏矩阵(维度: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)
以将字符值转换为数字,但这只是使它成为一个大数字。我确定这是因为值是字符。请指出我的错误。
答案 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