String 是否可以向函数传递用于创建全局矩阵的字符串?
我在一门简介生物课程中教授R编程,使用基本SIR模型作为动机。在学生们得到基本模型后,我想让他们改变参数,看看这是如何改变感染动力学的。下面的代码可以工作,但每次运行时都返回相同的名为“dmatrix”的代码:String 是否可以向函数传递用于创建全局矩阵的字符串?,string,r,function,global-variables,String,R,Function,Global Variables,我在一门简介生物课程中教授R编程,使用基本SIR模型作为动机。在学生们得到基本模型后,我想让他们改变参数,看看这是如何改变感染动力学的。下面的代码可以工作,但每次运行时都返回相同的名为“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(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
}
函数(步骤、弹出、IR、RR){
idmatrix只需从函数返回矩阵,并在提示下进行赋值
infection = function(steps,pop,IR,RR){
...
return(idmatrix)
}
那么它的,
model1 = infection(1000, 10, 0.4, 0.1)
model2 = infection(1000, 10, 0.5, 0.2)
然后比较model1
和model2
对象。只需从函数返回矩阵,并在提示下执行赋值
infection = function(steps,pop,IR,RR){
...
return(idmatrix)
}
那么它的,
model1 = infection(1000, 10, 0.4, 0.1)
model2 = infection(1000, 10, 0.5, 0.2)
然后比较model1
和model2
对象。只需从函数返回矩阵,并在提示下执行赋值
infection = function(steps,pop,IR,RR){
...
return(idmatrix)
}
那么它的,
model1 = infection(1000, 10, 0.4, 0.1)
model2 = infection(1000, 10, 0.5, 0.2)
然后比较model1
和model2
对象。只需从函数返回矩阵,并在提示下执行赋值
infection = function(steps,pop,IR,RR){
...
return(idmatrix)
}
那么它的,
model1 = infection(1000, 10, 0.4, 0.1)
model2 = infection(1000, 10, 0.5, 0.2)
然后比较model1
和model2
对象。给定您的函数:
f <- function(output_matrix,steps,pop,IR,RR){
...
assign(output_matrix, idmatrix, envir=.GlobalEnv)
}
f给定您的函数:
f <- function(output_matrix,steps,pop,IR,RR){
...
assign(output_matrix, idmatrix, envir=.GlobalEnv)
}
f给定您的函数:
f <- function(output_matrix,steps,pop,IR,RR){
...
assign(output_matrix, idmatrix, envir=.GlobalEnv)
}
f给定您的函数:
f <- function(output_matrix,steps,pop,IR,RR){
...
assign(output_matrix, idmatrix, envir=.GlobalEnv)
}
f看一看?赋值
看一看?赋值
看一看?赋值
看一看?赋值
创建这样的东西很奇怪。如果你的函数只创建了一个东西,那么把它作为返回值返回,并在命令行创建它。当然x=sqrt(2)
优于sqrt(2,“x”)
?仅仅因为它在其他地方使用,对于一个典型的用户来说,以返回函数输出的默认方式使用它并不是一个好主意。创建这样的东西很奇怪。如果你的函数只创建一个东西,那么将它作为返回值返回,并在命令行中创建它。当然x=sqrt(2)
优于sqrt(2,“x”)
?仅仅因为它在其他地方使用,对于一个典型的用户来说,以返回函数输出的默认方式使用它并不是一个好主意。创建这样的东西很奇怪。如果你的函数只创建一个东西,那么将它作为返回值返回,并在命令行中创建它。当然x=sqrt(2)
优于sqrt(2,“x”)
?仅仅因为它在其他地方使用,对于一个典型的用户来说,以返回函数输出的默认方式使用它并不是一个好主意。创建这样的东西很奇怪。如果你的函数只创建一个东西,那么将它作为返回值返回,并在命令行中创建它。当然x=sqrt(2)
优于sqrt(2,“x”)
?仅仅因为它在其他地方使用,对于一个典型的用户来说,以返回函数输出的默认方式使用它并不是一个好主意。非常好——这有助于我更好地理解R ethosexcellent——这有助于我更好地理解R ethosexcellent——这有助于我更好地理解R ethosexcellentsexcellent——这有助于我更好地理解R精神