r - 列中的 R 部分 gsub
问题描述
我有一个问题,我如何才能部分地为 df 的第一列 gsub。我可以删除冒号后的所有字符串,但我想将信息保留在以 19 开头的行中。
df$V1:
rs1231243:G:T:0
rs483294:C:T:5098723
19:4783234:T:G
rs19873423:A:C
19:83947355:C:T
kpg897324
rs3287492:G:C
Desired output:
rs1231243
rs483294
19:4783234:T:G
rs19873423
19:83947355:C:T
kpg897324
rs3287492
code:
df$V1 <- gsub("\\:.*","",df$V1)
我不知道如何有条件地 gsub 或其他方法来做到这一点。请指教。谢谢。
解决方案
你可以使用否定。展望:
gsub("^(?!19)([^:]+).*", "\\1", df$V1, perl = T)
在 regex101.com 上查看演示。
这产生了
df["V2"] <- gsub("^(?!19)([^:]+).*", "\\1", df$V1, perl = T)
df
V1 V2
1 rs1231243:G:T:0 rs1231243
2 rs483294:C:T:5098723 rs483294
3 19:4783234:T:G 19:4783234:T:G
4 rs19873423:A:C rs19873423
5 19:83947355:C:T 19:83947355:C:T
6 kpg897324 kpg897324
7 rs3287492:G:C rs3287492
推荐阅读
- c++ - 为什么这个初始化列表不能匹配模板参数?
- dictionary - 如何在python中删除字典中的空格?
- node.js - 使用 loopback v4 时如何设置 mongodb 集合名称?
- python - 如何从具有不同参数的方法列表中随机选择方法?
- excel - 如何按索引访问`.Range`对象项?
- java - 查看 JSP 站点中的时间戳是否超过 24 小时
- python - 标准化大量数值数据以创建有价值的线图
- python - 如何让客户端(例如浏览器)使用 python 通过 UDP 和 TCP 请求一些资源
- reactjs - 通过将其解析为标志来运行带有纱线的可选脚本
- reactjs - React -> React Boilerplate: 上面的错误发生在
零件: