我有一个表达式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?使用正则表达式和字符串函数? 感谢..
答案 0 :(得分:1)
您可以使用strsplit
和regmatches
函数来获取操作数和运算符。
> 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] "+" "-"