簡體   English   中英

循環以在R中創建特定矩陣

[英]Loop to create a specific matrix in R

我不是程序員(實際上我是經濟學家)。 因此,請大方回答。 我剛剛開始學習R-我已經閱讀了一些有關循環的教程,但是我仍然陷於這個問題。

我的問題是:我需要使用R中的循環創建下面的矩陣。

$$
\begin{bmatrix}
0.1 & 0.9 & 0 & 0 & 0\\ 
0.1 & 0 & 0.9 & 0 & 0\\ 
0 & 0.1 & 0 & 0.9 &0 \\ 
0 & 0 & 0.1 & 0 &0.9 \\ 
0 & 0 & 0 & 0.1 & 0.9
\end{bmatrix}
$$

如果有人可以逐步解釋我,我將不勝感激

通常,通過按行( byrow=TRUE )或默認值按列( byrow=FALSE )包裝值的向量來構成矩陣

matrix(
    c(0.1,0.9,0,0,0,
    0.1,0,0.9,0,0,
    0,0.1,0,0.9,0,
    0,0,0.1,0,0.9,
    0,0,0,0.1,0.9),
    nrow=5,ncol=5,
    byrow=TRUE
)

結果:

     [,1] [,2] [,3] [,4] [,5]
[1,]  0.1  0.9  0.0  0.0  0.0
[2,]  0.1  0.0  0.9  0.0  0.0
[3,]  0.0  0.1  0.0  0.9  0.0
[4,]  0.0  0.0  0.1  0.0  0.9
[5,]  0.0  0.0  0.0  0.1  0.9

另外,我不確定為什么需要這樣做,您可以設置一個循環,在該循環中可以使用索引來提供行索引和列索引:

x <- c(0.1,0.9,0,0,0,
    0.1,0,0.9,0,0,
    0,0.1,0,0.9,0,
    0,0,0.1,0,0.9,
    0,0,0,0.1,0.9)
m <- matrix(NaN, 5, 5)
for(i in seq(length(m))){
    ROW <- (i-1) %/% ncol(m) + 1
    COL <- (i-1) %% ncol(m) + 1
    m[ROW, COL] <- x[i]
}
m

結果:

     [,1] [,2] [,3] [,4] [,5]
[1,]  0.1  0.9  0.0  0.0  0.0
[2,]  0.1  0.0  0.9  0.0  0.0
[3,]  0.0  0.1  0.0  0.9  0.0
[4,]  0.0  0.0  0.1  0.0  0.9
[5,]  0.0  0.0  0.0  0.1  0.9

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM