我想对公式中的变量进行模式匹配。 理想解决方案应该能够执行以下操作:formula <- 'variable_1+variable_2*variable_3-variable_4/variable_5'
和输出应为variable_1,variable_2,variable_3,variable_4,variable_5。
注:变量名称只能包含字符,下划线(_),数字,并且运算限制为+,-,*,/。
我已经尝试了以下代码。我只能检查包含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"
如果有人可以帮助我提供理想的解决方案,我将不胜感激。
您可以为此使用正则表达式:
formula <- "variable_1+variable_2*variable_3-variable_4/variable_5"
gsub("[\\+\\*\\-\\/]", ", ", formula)
正则表达式说明:
[
和]
开始和结束要选择的一组字符\\+
”转义为+,要替换为“,”\\*
会转义*号,您要替换为“,”\\-
”转义-符号,您要替换为“,”\\/
转义/符号,您要替换为“,”