簡體   English   中英

for循環列表中的每個矩陣

[英]for loop for every matrices in a list

我正在嘗試將以下 for 循環應用於列表per_d中的每個矩陣,並創建一個名為per_hole的新列表。 我不確定該怎么做,我應該使用 lapply 嗎?

非常感謝您的幫助!

per_hole <- per_d
  for (i in 1:S) {
    for (j in 1:t){
  if (per_hole [i,j] > CS) {
    per_hole [i,j] <- per_hole [i,j] - rnorm (1, mean = 1, sd = 0.5)
  } else {
    per_hole [i,j] <- per_hole [i,j] + rnorm (1, mean = 1, sd = 0.5)
  }}}

復制代碼

N <- 1
CS <- 10.141 
S <- seq (7.72,13,0.807) 
t <- 15
l <- length (S)
m0 <- 100 
exps <- c(0.2, 0.5, 0.9, 1.5, 2) 
sd_per <- c(0.2, 0.5, 0.8, 1.3, 1.8) 
sd_noise <- 3 


per <- lapply(sd_per, function(x){ 
  per <- matrix(nrow = length(S)*N, ncol = t+1)
  for (i in 1:dim(per)[1]) {
    for (j in 1:t+1){
      per [,1] <- replicate (n = N, S)
      per [i,j] <- round (abs (rnorm (1, mean = per[i,1], sd =x)),digits=3)
      colnames(per) <- c('physical',paste('t', 1:15, sep = ""))
      per <- as.data.frame (per)
    }
  }
  per <- per [,-1]
  return(per)
}
)  
names(per) <- paste("per", seq_along(sd_per), sep = "")

per_d <- lapply(per, function(x){ 
  per_d <- abs (x - 10.141) 
}
)  
names(per_d) <- paste("per_d", seq_along(sd_per), sep = "")

你可以試試

per_hole <- lapply(per_d,function(x) x + ifelse(x>CS,-1,1)*rnorm(prod(dim(x)),1,0.5))

要么

per_hole <- lapply(per_d, function(x) x + rnorm(prod(dim(x)), 1-2*(x > CS), 0.5))

暫無
暫無

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

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