如何在R语言中拆分字符串,分离数字与字符部分?
R语言规则字符串拆分解决方案
直接用正则表达式就能搞定你的需求,具体代码如下:
# 原始规则字符串 rule <- "X[,16] <= -0.664 & X[,11] <= -2.1891 & X[,17] >= -0.4138" # 提取数字部分 num_part <- as.numeric(stringr::str_extract_all(rule, "-?\\d+\\.?\\d*")[[1]]) # 输出结果:num_part = c(16, -0.664, 11, -2.1891, 17, -0.4138) # 生成字符结构部分 char_part <- rule # 替换列索引中的数字 char_part <- gsub("(?<=X\\[,)\\d+(?=\\])", "", char_part, perl = TRUE) # 替换阈值中的数字 char_part <- gsub("(?<=[<>]=\\s*)-?\\d+\\.?\\d*", "", char_part, perl = TRUE) # 整理空格匹配目标格式 char_part <- gsub("\\s+<=\\s+", "<= ", char_part) char_part <- gsub("\\s+>=\\s+", " >= ", char_part) char_part <- gsub(" <= ", "<= ", char_part) # 最终输出:char_part = "X[,]<= & X[,] <= & X[,] >="
代码说明
- 提取数字部分:用
stringr::str_extract_all匹配所有包含负号、整数、小数的数字片段,转成数值型向量。 - 生成字符部分:用正向前后断言正则精准替换列索引和阈值里的数字,再调整空格匹配你需要的格式。
内容的提问来源于stack exchange,提问作者mr.T
相关产品推荐
相关产品推荐

