Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.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/1/list/4.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
R包中的参数对象_R - Fatal编程技术网

R包中的参数对象

R包中的参数对象,r,R,我有一个带参数的模拟模型 我没有将所有参数传递给主函数(这对于用户来说很复杂,因为一些参数的尺寸取决于它们自己,例如,如果n=2,vec_n的长度为2),而是希望包中有一个内部参数对象,所有函数都可以访问,用户可以更改 我制作了一个包Test,其中包含两个函数和一个内部列表internal=list(a=2),保存在sysdata.rda中 test_function<-function(b){ INTERNAL$a = b print(INTERNAL) second_fun

我有一个带参数的模拟模型

我没有将所有参数传递给主函数(这对于用户来说很复杂,因为一些参数的尺寸取决于它们自己,例如,如果
n=2
vec_n
的长度为2),而是希望包中有一个内部参数对象,所有函数都可以访问,用户可以更改

我制作了一个包
Test
,其中包含两个函数和一个内部列表
internal=list(a=2)
,保存在sysdata.rda中

test_function<-function(b){
  INTERNAL$a = b
  print(INTERNAL)
  second_function()
}

second_function<-function(){
  print(INTERNAL$a)
}

显然,对象本身在函数之外不会发生变化


如果您能提供帮助/建议,我将不胜感激。

内部$a=b
在您的函数中创建
内部
的本地副本,并对其进行修改。由于要修改全局副本,可以使用

INTERNAL$a <<- b
由(v1.0.0)于2021年4月19日创建

您可以将这两种想法结合起来:

内部$b
#>[1]“默认”
内部(b=2)
#>一美元
#> [1] 1
#> 
#>b美元
#> [1] 2
内部(c=3)
#>一美元
#> [1] 1
#> 
#>b美元
#> [1] 2
#> 
#>$c
#> [1] 3

由(v1.0.0)于2021-04-19创建

谢谢您的支持。是否有任何理由不使用环境?只要你知道你在做什么,环境就很好。事实上,这就是我的第二个解决方案所使用的:它只是没有让环境变得明显。
INTERNAL$a <<- b