我想知道如何在数据*
之后删除所有内容。我有以下值:IGHV4-59*01
和IGHV4-4*02
,只需要IGHV4-59
和IGHV-4
。我尝试使用sub但没有得到预期的结果:
sub("*.*" , " ", data_head$v_segment)
## [1] " " " " " " " " " " " "
而不是在*之后删除所有内容,而是完全删除所有内容。感谢。
答案 0 :(得分:2)
试试这个。基本上,*
是正则表达式中的元字符,因此如果您希望引擎将其视为实际的标点字符,则需要将其转义。
gsub("\\*.*", "", c("IGHV4-59*01", "IGHV4-4*02")) # You can use `sub` too as per comment
## [1] "IGHV4-59" "IGHV4-4"
答案 1 :(得分:1)
您的正则表达式失败,因为*
是正则表达式中的特殊字符,即使前面没有其他字符也是如此。因此需要进行转义。 "\\*.*"
是您想要的模式。
答案 2 :(得分:1)
它没有按预期工作,因为您需要转义*
以匹配文字。
sub("\\*.*", "", data_head$v_segment)