与R中的公式匹配的模式

问题描述 投票:0回答:1

我想对公式中的变量进行模式匹配。 理想解决方案应该能够执行以下操作:formula <- 'variable_1+variable_2*variable_3-variable_4/variable_5'和输出应为variable_1variable_2variable_3variable_4variable_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"

如果有人可以帮助我提供理想的解决方案,我将不胜感激。

r pattern-matching string-matching
1个回答
0
投票

您可以为此使用正则表达式:

formula <- "variable_1+variable_2*variable_3-variable_4/variable_5"
gsub("[\\+\\*\\-\\/]", ", ", formula)

正则表达式说明:

  • [[]开始和结束要选择的一组字符
  • [\\+”转义为+,要替换为“,”
  • [\\*会转义*号,您要替换为“,”
  • [\\-”转义-符号,您要替换为“,”
  • \\/转义/符号,您要替换为“,”
© www.soinside.com 2019 - 2024. All rights reserved.