我试图在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"

R相关问答推荐

根据固定值范围在tible中添加新行

为什么以及如何修复Mapview不显示所有点并且st_buffer合并一些区域R?

使用ggcorrplot在相关性矩阵上标注supertitle和index标签

Highcharter多次钻取不起作用,使用不同方法

从R导出全局环境中的所有sf(numrames)对象

如何在Chart_Series()中更改轴值的 colored颜色 ?

如何优化向量的以下条件赋值?

如何编辑gMarginal背景以匹配绘图背景?

用关联字符串替换列名的元素

传递ggplot2的变量作为函数参数—没有映射级别以正确填充美学

用R ggplot2求上、下三角形中两个变量的矩阵热图

将向量元素重新排序为R中的第二个

在散点图中使用geom_point放置线图例

名字的模糊匹配

需要一个函数来在第一行创建一个新变量,然后用新变量替换一个不同的变量(对于多行)

抽样变换-REXP与RWEIBUR

如何在R中的两列以上使用联合(&U)?

使用显式二元谓词子集化sfc对象时出错

如何在一个GGPLATE中绘制多个灰度平滑?

R中的交叉表