Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 是否可以向函数传递用于创建全局矩阵的字符串?_String_R_Function_Global Variables - Fatal编程技术网

String 是否可以向函数传递用于创建全局矩阵的字符串?

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

我在一门简介生物课程中教授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(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精神