Julia 如何在@formula宏中使用字符变量?

Julia 如何在@formula宏中使用字符变量?,julia,Julia,如何在@fomula()中使用变量 我想写一些像这样的东西 var1 = "price + volume" ModelFormula = @formula(dep_var ~ 0 + $var1) 这将被解释为 @formula(dep_var ~ 0 + price + volume) …在这件事上花了些时间。如果有更好的方法,请发布答案 工作原理如下: var1 = "price + volume" ModelFormula = @eval @f

如何在
@fomula()
中使用变量

我想写一些像这样的东西

var1 = "price + volume"
ModelFormula = @formula(dep_var ~ 0 + $var1)
这将被解释为

@formula(dep_var ~ 0 + price + volume)

…在这件事上花了些时间。如果有更好的方法,请发布答案

工作原理如下:

var1 = "price + volume"

ModelFormula = @eval @formula(dep_var ~ 0 + $(Symbol(var1)))
尽管如此,传递整个表达式“dep_var=0+价格+数量”会生成一个错误:

julia> formula = "a ~ 0 + b"
julia> @eval @formula($(Symbol(formula)))
ERROR: LoadError: type Symbol has no field head
编辑2: 更深入地挖掘,似乎通过这种方法,您可以自己传递每个变量,以便
@formula
独立地解释每个变量

var1 = "price"
var2 = "volume"

ModelFormula = @eval @formula(dep_var ~ 0 + $(Symbol(var1)) + $(Symbol(var2)))

阅读StatsModels.jl中的文档(您可能会使用它)。在您的情况下,以下内容似乎就足够了:

Term(:dep_var) ~ ConstantTerm(0) + Term(:price) + Term(:volume)

或者
fold(+,Term.([:price,:volume])
如果名称以数组形式给出。

太好了,谢谢。我可以在这样的构造中使用
zerocorr()
吗?我不知道那是什么,但您可能会在中找到一些有用的东西。