如何在R

时间:2019-05-09 04:49:18

标签: r expression substitution

我需要有可能用未知数量的变量的值填充表达式。表达式的形状取决于变量的数量。


示例:

Expression1 :“斜体(y)== a *斜体(x)* b”

要成为 :“ y = 1.2 x +4.3”

Expression2 :“斜体(y)== a *斜体(x)* b〜c”

要成为 :“ y = 1.2 x +4.3 -5.3”


当前我正在使用替代函数,但是它不能与expression函数一起使用:

substitute(expression("italic(y)==a*italic(x)*b"),list(a=1.23,b=2.3))

我的表达需要随着变量数量(即列表长度)的增加而增长。因此,下一步将是添加变量 c

substitute(expression("space1*italic(y)==a*italic(x)*b*c"),list(a=1.23,b=2.3,c=3.2))

但是我需要在代码中更改表达式,而无需任何人工干预,并且这些代码不会从列表中读取变量值,除非我将其更改为此(表达式不再是可扩展的,因为它不是字符串, ):

substitute(italic(y)==a*italic(x)*b*c,list(a=1.23,b=2.3,c=3.2))

我该怎么做?

1 个答案:

答案 0 :(得分:1)

以下是一个脚本,该脚本可能符合您的要求。我们可以使用$contacts = $stmt->fetchAll(PDO::FETCH_NUM); 循环迭代替换列表,然后使用列表中的相应值对表达式中的占位符进行正则表达式替换。

for

请注意,我搜索的变量名两侧都带有单词边界。如果您的占位符会被其他单词字符包围,那么我的解决方案将失败,并且我们需要更改替换逻辑。