如何将表达式分离为R中的向量

时间:2015-04-10 10:38:46

标签: regex r

我有一个表达式MAX(51)+MIN(52)-53。我想将这个表达式分成两个向量。像

operands=c("MAX(51)","MIN(52)","53");

operators=c("+","-");

我尝试了以下内容:但它返回" MIN(51)" " MAX(52)-23"但我希望输出为" MIN(51)" " MAX(52)" " 23"

arr<-c('\\+','\\-','\\*','\\/');
strsplit("MIN(51)+MAX(52)-23", arr);

第一个向量将是一个操作数和数组 第二个向量将是一个运算符数组。 如何在R?使用正则表达式和字符串函数? 感谢..

1 个答案:

答案 0 :(得分:1)

您可以使用strsplitregmatches函数来获取操作数和运算符。

> x <- "MAX(51)+MIN(52)-53"
> operands <- unlist(strsplit(x, "[-+*/]"))
> operands
[1] "MAX(51)" "MIN(52)" "53"     
> operators <- unlist(regmatches(x, gregexpr("[-+*/]", x)))
> operators
[1] "+" "-"

OR

operands <- strsplit(x, '[-+*/]')[[1]] 

OR

> operands <- unlist(strsplit(x, "[^a-zA-Z0-9()]+"))
> operands
[1] "MAX(51)" "MIN(52)" "53"     
> operators <- unlist(regmatches(x, gregexpr("[^a-zA-Z0-9()]+", x)))
> operators
[1] "+" "-"