如何使用paradox包的p_dbl设置指定的3个浮点参数值?
解决paradox包中指定参数离散浮点值的问题
要给paradox参数集里的参数X指定0.99、0.98、0.97这三个固定浮点值,你需要利用参数的离散值指定机制,而非默认连续型的p_dbl()写法。以下是两种可行的实现方式:
方法1:使用p_dbl()结合values参数
p_dbl()支持通过values参数直接传入允许的离散数值,这会覆盖默认的连续范围限制,强制参数只能取你指定的几个值:
library(paradox) # 创建参数集并定义参数X param_set = ParamSet$new(list( p_dbl(id = "X", values = c(0.99, 0.98, 0.97)) ))
方法2:使用p_fct()定义因子型参数并转换数值
如果需要更明确的离散类型声明,可以用p_fct()定义因子参数,再通过trafo参数自动转换为数值类型:
library(paradox) param_set = ParamSet$new(list( p_fct(id = "X", levels = c(0.99, 0.98, 0.97), trafo = function(x) as.numeric(x)) ))
为什么之前的写法无效?
你尝试的p_dbl(c(0.99, 0.98, 0.97))不符合函数参数定义:p_dbl()的第一个参数是参数的id(字符串类型),而非数值向量,因此这种写法会被解析错误,无法达到预期效果。
内容的提问来源于stack exchange,提问作者Mislav Sagovac
相关产品推荐
相关产品推荐

