我在使用基本SIR模型作爲動機的介紹生物課程中教授R編程。在學生獲得基本模型後,我希望他們改變參數以查看這會如何改變感染動態。下面的代碼工作,但返回相同的命名爲「dmatrix」每次運行:是否可以傳遞一個函數來使用一個字符串來創建一個全局矩陣?
function(steps,pop,IR,RR){
idmatrix <- matrix(c(seq(1,steps),rep.int(0,steps*4)),nrow=steps,ncol=5)
StoI <- function(x,y,z) {x*y*z}
ItoR <- function(z,r) {z*r}
idmatrix[1,2] <- pop - 1
idmatrix[1,3] <- 1
for (i in 2:steps){
deltaS <- StoI(IR,idmatrix[i-1,2],idmatrix[i-1,3])
deltaI <- ItoR(idmatrix[i-1,3],RR)
idmatrix[i,2] <- idmatrix[i-1,2] - deltaS
idmatrix[i,3] <- idmatrix[i-1,3] + deltaS - deltaI
idmatrix[i,4] <- idmatrix[i-1,4] + deltaI
idmatrix[i,5] <- idmatrix[i,2] + idmatrix[i,3] + idmatrix[i,4]
}
dmatrix <<- idmatrix
}
我想添加如下傳遞「runSIR」用於創建輸出矩陣字符串的選項:
function(output_matrix,steps,pop,IR,RR){
...
output_matrix <<- idmatrix
}
我探索瞭如何讓'output_matrix'被識別爲一個字符串,但是我找不到一種方法來實現它作爲新矩陣的名稱。這可能嗎?
謝謝! -Kevin
看看'?assign' –