如何删除字符串的一部分?例如在ATGAS_1121
我想删除之前的所有内容_
。
Answers:
使用正则表达式。在这种情况下,您可以使用gsub
:
gsub("^.*?_","_","ATGAS_1121")
[1] "_1121"
此正则表达式匹配字符串(^)的开头,重复零次或多次(*)的任何字符(。)和下划线(_)。?使匹配项“惰性”,以便仅匹配项与第一个下划线相距较远。该匹配项仅由下划线代替。请参阅?regex
以获取更多详细信息和参考
这是strsplit
使用dplyr
包的数据框的解决方案
col1 = c("TGAS_1121", "MGAS_1432", "ATGAS_1121")
col2 = c("T", "M", "A")
df = data.frame(col1, col2)
df
col1 col2
1 TGAS_1121 T
2 MGAS_1432 M
3 ATGAS_1121 A
df<-mutate(df,col1=as.character(col1))
df2<-mutate(df,col1=sapply(strsplit(df$col1, split='_', fixed=TRUE),function(x) (x[2])))
df2
col1 col2
1 1121 T
2 1432 M
3 1121 A
gsub("^.*_","_","ATGAS_1121_xxx")
。现在已修复。