【发布时间】:2020-02-25 08:44:22
【问题描述】:
我想对公式中的变量进行模式匹配。 理想的解决方案应该能够执行如下:
formula <- 'variable_1+variable_2*variable_3-variable_4/variable_5 + 456' 和输出应该是 variable_1、variable_2、variable_3、variable_4、variable_5.
注意:变量名可以包含字符、下划线(_)、只能是数字,操作仅限于+、-、*、/。公式也可能包含常量(比如这里是 456)。输出应仅包含变量名称,并应忽略任何数字常量。
我已经尝试了以下代码。我只能检查包含 only character 的变量名,而减号操作 (-) 也不起作用。
formula <- "variableX +variableY*VariableZ"
strapplyc(gsub(" ", "", format(formula), fixed = T), "-?|[a-zA-Z_]+", simplify = T, ignore.case = T) 给出以下输出
[,1]
[1,] "variableX"
[2,] ""
[3,] "variableY"
[4,] ""
[5,] "VariableZ"
这是正确的,但是当我包含减号操作 (-) 时,strapplyc 会给出错误的结果
formula <- "variableX -variableY"
strapplyc(gsub(" ", "", format(formula), fixed = T), "-?|[a-zA-Z_]+", simplify = T, ignore.case = T) 给出以下输出
[,1]
[1,] "variableX"
[2,] "-"
[3,] "variableY"
如果有人能帮助我找到理想的解决方案,我将不胜感激。
【问题讨论】:
标签: r pattern-matching string-matching