簡體   English   中英

如何在 R 中用循環填充矩陣?

[英]How to fill out a matrix with a loop in R?

a <- function(b,c,d,e,f){ 
if(f == 1){
  Value1 <- b * c * d * e
  return(Value1)
}else if(f == 2){
  Value2 <- b * c * d
  return(Value2) 
}else{
  Value3 <- 0 
}
}

假設我想用c = seq(1,2,0.2)和 b,e,f 來分析d =seq(1,1.2,0.01)的 Value2 和 d 之間的關系。

我試過這個:

ValueChange <- matrix(,6,21) 

for(i in seq(1,1.2,0.01)){
  for(j in seq(1,2,0.2)){
    for(n in 1:6){

      ValueChange[n,] <- c(ValueChange, a(10,j,i,5,2))

    }
}
}
ValueChange

它應該是這樣的:

ValueChange[1,1] <- a(10,1,1,5,2)
ValueChange[1,2] <- a(10,1,1.01,5,2)
... 
ValueChange[2,1] <- a(10,1.2,1,5,2)
...

出現錯誤信息:要替換的項目數不是替換長度的倍數。 但是,我不知道如何解決它。 謝謝你的幫助!

對於您的嵌套for循環,它可能類似於

p <- seq(1,1.2,0.01)
q <- seq(1,2,0.2)
for(i in seq_along(p)){
  for(j in seq_along(q)){
      ValueChange[j,i] <- a(10,q[j],p[i],5,2)
  }
}

也許你可以嘗試嵌套sapply

ValueChange <- sapply(seq(1,1.2,0.01), function(i) sapply(seq(1,2,0.2), function(j) a(10,j,i,5,2)))

給出與嵌套for循環相同的結果

暫無
暫無

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

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