如何用Base R正则表达式重排含Sepal.Length的表达式字符串
解决方案
用Base R的gsub结合正则捕获组就能实现通用转换,核心是精准匹配字符串结构并重组各部分:
# 示例输入 orig <- "mean(Sepal.Length, na.rm = TRUE)" # 执行转换 result <- gsub("^([a-zA-Z0-9_]+)\\((Sepal\\.Length)(.*)\\)$", '"\\2$\\1\\3"', orig) # 查看结果 result #> [1] "Sepal.Length$mean(na.rm = TRUE)"
正则规则说明
^([a-zA-Z0-9_]+):捕获开头的函数名(匹配R合法的函数命名规则)\\((Sepal\\.Length):匹配左括号后固定的Sepal.Length并捕获(.*)\\)$:捕获Sepal.Length之后到右括号的所有内容(包括参数、逗号等)- 替换模板
"\\2$\\1\\3":将捕获的第二组(Sepal.Length)放在最前,接着是$,然后是第一组(函数名),最后拼接第三组(剩余参数部分)
测试无参数场景
如果输入是不带额外参数的表达式:
orig2 <- "sum(Sepal.Length)" gsub("^([a-zA-Z0-9_]+)\\((Sepal\\.Length)(.*)\\)$", '"\\2$\\1\\3"', orig2) #> [1] "Sepal.Length$sum()"
内容的提问来源于stack exchange,提问作者bretauv
相关产品推荐
相关产品推荐

