循环以在R中创建特定矩阵

时间:2014-03-13 05:08:36

标签: r loops matrix

我不是程序员(事实上我是经济学家)。所以,请你慷慨解答。我刚刚开始学习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}
$$

如果有人能够一步一步地解释我,我将不胜感激

1 个答案:

答案 0 :(得分:0)

通常,通过按行(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