You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何高效解析逗号分隔字符串为两个R向量并移除负前缀

简洁解析带正负标记的字符串为两个向量

这里给你一个高效又简洁的R实现方案,完美匹配你的需求:

vals <- "-AB, CV, CL, -TS"

# 拆分字符串并清理多余空格
elements <- trimws(strsplit(vals, ",")[[1]])

# 分离正负向量
negative <- sub("^-", "", elements[grepl("^-", elements)])
positive <- elements[!grepl("^-", elements)]

运行后就能得到你想要的结果:

> negative
[1] "AB" "TS"
> positive
[1] "CV" "CL"

简单解释下逻辑:

  • strsplit(vals, ",")[[1]] 把原始字符串按逗号分割成字符向量,[[1]] 是因为strsplit返回的是列表格式
  • trimws() 自动去除每个元素前后的空格,避免空格干扰后续的匹配判断
  • grepl("^-", elements) 用正则表达式匹配所有以-开头的元素,通过这个布尔索引提取出对应元素后,sub("^-", "", ...) 把开头的负号移除,得到最终的negative向量
  • positive向量则直接取所有-开头的元素即可

这个方案既简洁又易读,完全满足你的需求~

内容的提问来源于stack exchange,提问作者C. Braun

火山引擎 最新活动