我有我的代碼:
V_max=10
V_min=0
H=1
n=1
x_right <- 3.2
x1_right <- 11.8
par(mfrow=c(length(C) 1,1), mar = c(2,0,2,0),oma = c(1,5,0,0))
V <- function( C, H, n ){
1 / (1 (C / H)^n)
}
x_lim_min=-1
x_lim_max=13
C=c(0,0.01,0.1,1)
mylist <- list()
for(i in 1:length(C)){
V_C <- V_max*V(C[i],H,n)
x3 <- rnorm(100,V_C,1)
mylist[i] <- mean(x3)
y3 <- hist(x3, plot=FALSE,breaks=20)
maans_to_hist <- unlist(mylist)
plot(y3, col='gray48',xlim=c(x_lim_min,x_lim_max))
}
我想改進我的代碼,以便它為我的 for 回圈的所有迭代計算直方圖中我的觀察值的百分比
- 小于
x_right一個因素和 - 小于
x1_right但大于x_right第二個因素
并將結果記錄在 2 個串列中,每個串列對應一個因素。老實說,我不知道該怎么做,所以我向有經驗的論壇用戶尋求幫助
uj5u.com熱心網友回復:
請注意,由于 R 是矢量化的,因此您通常可以完全避免使用顯式回圈。而且您也不需要為V Eg 定義函式:
V_max=10
V_min=0
H=1
n=1
x_right <- 3.2
x1_right <- 11.8
par(mfrow=c(length(C) 1,1), mar = c(2,0,2,0),oma = c(1,5,0,0))
C=c(0,0.01,0.1,1)
len_C <- length(C)
x_lim_min=-1
x_lim_max=13
V <- 1 / (1 (C / H)^n)
V_C <- V_max*V
x3 <- sapply(V_C, function(x) rnorm(100, x, 1))
means_x3 <- colMeans(x3)
y3 <- lapply(1:len_C, function(z) hist(x3[z], plot=FALSE,breaks=20))
# calculate checks using apply
check1 <- apply(x3, 2, function(x) sum(x < x1_right)) / 100
check2 <- apply(x3, 2, function(x) sum(x > x_right & x < x1_right)) / 100
如果您檢查環境面板,您會看到標量擴展為向量、矩陣 (x3) 和串列 (y3)。要繪制 y3 元素,請按其串列索引號參考每個元素。例如:
plot(y3[[1]], col='gray48',xlim=c(x_lim_min,x_lim_max)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/536597.html
標籤:rfor循环
