我有一个数据框,其中“ID”列的值如下: 1234567_GSM00298873 1238416_GSM90473673 98377829
换句话说,有些行有7个数字后跟“_”后跟字母和数字;其他行只有数字
我想删除字母前面的数字和下划线,而不会影响只有数字的行。我试过了
dataframe$ID <- gsub("*_", "", dataframe$ID)
但这只会删除下划线。所以我了解到*意味着零或更多。 是否有通配符和重复运算符,以便我可以告诉它找到“任何 - 七次跟随_”的模式? 谢谢!
答案 0 :(得分:1)
您的正则表达式语法不正确。你的重复算子之前没有任何东西。
dataframe$ID <- gsub('[0-9]+_', '', dataframe$ID)
这匹配任何字符:0
到9
(1
或更多次),前面有下划线。
答案 1 :(得分:0)
这样的东西?:
dataframe$ID <- gsub("[0-9]+_", "", dataframe$ID)
答案 2 :(得分:0)
链接http://marvin.cs.uidaho.edu/Handouts/regex.html可以帮助您。
"[0-9]*_"
将匹配数字后跟'_'"[0-9]{7}_"
将匹配7个数字,后跟“_”".{7}_"
将匹配7个字符,后跟'_'答案 3 :(得分:0)
另一种方法。如果字符串有下划线,则从下划线返回到字符串的末尾;如果没有,请返回字符串。
ID <- c("1234567_GSM00298873", "1238416_GSM90473673", "98377829")
ifelse(grepl("_", ID), substr(x = ID, 9, nchar(ID)), ID)