我不是程序员(事实上我是经济学家)。所以,请你慷慨解答。我刚刚开始学习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}
$$
如果有人能够一步一步地解释我,我将不胜感激
答案 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