我正在尝试在 R 中生成一个简单的多变量表达式,类似于以下内容:
coef1 * prev1 + coef2 * prev2 + coef3 * prev3
我可以轻松地做到这一点
quote()
quote(coef1 * prev1 + coef2 * prev2 + coef3 * prev3)
生成所需的
call
类。
当我有多个系数(即多个
coef
)需要估计时,就会出现问题。
我可以使用
paste0()
来做到这一点
myvec <- 1:3
paste0(paste0("coef",myvec,"*prev",myvec),collapse="+")
#> [1] "coef1*prev1+coef2*prev2+coef3*prev3"
但问题是上面的类是
character
。使用quote()
,类是call
,可以用来评估。
我也无法将上面的内容包装在
quote
中,因为 paste0
函数将包含在表达式中:
quote(paste0(paste0("coef",myvec,"*prev",myvec),collapse="+"))
将给予:
paste0(paste0("coef", myvec, "*prev", myvec), collapse = "+")
当我想要的只是:
coef1 * prev1 + coef2 * prev2 + coef3 * prev3
有没有可能的方法仍然生成一个具有多个变量的
call
类来进行估计,而不必在quote
中显式地输入它们?
提前致谢!
使用
str2lang
代替 quote
myvec <- 1:3
mycall <- str2lang(paste0(paste0("coef", myvec, "*prev", myvec), collapse = "+"))
mycall
#> coef1 * prev1 + coef2 * prev2 + coef3 * prev3
class(mycall)
#> [1] "call"