mat <- diag(3)
> mat
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1
我有一個矩陣,沿對角線為 1,其他地方為 0。我想用 0.3 替換 0,所以矩陣看起來像
> mat
[,1] [,2] [,3]
[1,] 1 0.3 0.3
[2,] 0.3 1 0.3
[3,] 0.3 0.3 1
這樣做的快速方法是什么?
uj5u.com熱心網友回復:
我們可以創建一個布爾向量來指示0并分配給它的每個元素TRUE
mat[mat == 0] <- 0.3
[,1] [,2] [,3]
[1,] 1.0 0.3 0.3
[2,] 0.3 1.0 0.3
[3,] 0.3 0.3 1.0
G.Grothendieck2 在速度方面領先:-)

uj5u.com熱心網友回復:
利用 replace
replace(mat, !mat, 0.3)
或者也可以做
(!mat) * 0.3 mat
[,1] [,2] [,3]
[1,] 1.0 0.3 0.3
[2,] 0.3 1.0 0.3
[3,] 0.3 0.3 1.0
uj5u.com熱心網友回復:
試試這個總和
mat 0.3 * (1 - mat)
## [,1] [,2] [,3]
## [1,] 1.0 0.3 0.3
## [2,] 0.3 1.0 0.3
## [3,] 0.3 0.3 1.0
一種變體是將其寫為以下 mat 和 1 的凸組合。
0.7 * mat 0.3
## [,1] [,2] [,3]
## [1,] 1.0 0.3 0.3
## [2,] 0.3 1.0 0.3
## [3,] 0.3 0.3 1.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/394815.html
上一篇:如何解決問題以生成數值
