原題目for-loop
ci_norm <- function(n=100, nci=50, nRun=3, level=0.95, pause=0.05) {
ci <- NULL
z0 = qnorm(1 - (1 - level)/2) #在常態分佈中,0.975的Z-score
for ( j in 1:nRun ) { #j依序帶入1~3(nRun)
zbar <- colMeans(replicate(nci, rnorm(n)))
#zbar=產生50個常態分布的隨機數(n=100,m=0,sd=1)
zl <- zbar - z0 * 1/sqrt(n); zu <- zbar + z0 * 1/sqrt(n)
#zl=zbar - z0*0.1 ; #zu=zbar + z0*0.1
#開始繪圖
plot(1, xlim = c(0.5, nci + 0.5), ylim = c(min(zl), max(zu)),
type = "n", xlab = "Sample ID", ylab = "Average")
abline(h = 0, lty = 3) #畫出水平軸=0
for( i in 1:nci ) { #依序帶入1~50(nci)
arrows(i, zl[i], i, zu[i], length = 0.05, angle = 90,
code = 3,
#1~50按照順序一一畫出,上下界分別為zl[i]、zu[i]
col = ifelse(0 > zl[i] & 0 < zu[i], "gray", "red"))
#如果0 > zl[i] 或 0 < zu[i],則使用灰色,否則使用紅色
points(i, zbar[i], pch = 19, col = "gray")
#原點一律灰色
}
}
}
## 最後更改代號(n、nci、nRun)代表的數字
ci_norm(n = 36, nci = 51, nRun = 2)更改為while-loop、repeat-loop
ci_norm <- function(n=100, nci=50, nRun=3, level=0.95, pause=0.05) {
ci <- NULL
z0 = qnorm(1 - (1 - level)/2) #在常態分佈中,0.975的Z-score
j <- 1
while ( j <= nRun ) { #當j小於、等於3(nRun)的時候,一一帶入
j <- j+1
zbar <- colMeans(replicate(nci, rnorm(n)))
#zbar=產生50個常態分布的隨機數(n=100,m=0,sd=1)
zl <- zbar - z0 * 1/sqrt(n); zu <- zbar + z0 * 1/sqrt(n)
#zl=zbar - z0*0.1 ; #zu=zbar + z0*0.1
#開始繪圖
plot(1, xlim = c(0.5, nci + 0.5), ylim = c(min(zl), max(zu)),
type = "n", xlab = "Sample ID", ylab = "Average")
abline(h = 0, lty = 3) #畫出水平軸=0
i <- 1
repeat{
if(i > nci) break #一一帶入,當i大於50(nci)的時候,停止
i <- i+1
arrows(i, zl[i], i, zu[i], length = 0.05, angle = 90,
code = 3,
#1~50按照順序一一畫出,上下界分別為zl[i]、zu[i]
col = ifelse(0 > zl[i] & 0 < zu[i], "gray", "red"))
#如果0 > zl[i] 或 0 < zu[i],則使用灰色,否則使用紅色
points(i, zbar[i], pch = 19, col = "gray")
#原點一律灰色
}
}
}
## 最後更改原本代號(n、nci、nRun)設定的數字
ci_norm(n = 36, nci = 51, nRun = 2)