如何用R语言删除DataFrame某列中|及右侧所有内容?
解决方法
你的问题出在正则表达式写法有误,原来的"\|+*"是无效的正则表达式,而且仅匹配了|符号本身,没有覆盖它后面的所有内容。
要实现删除|及其右侧所有内容的需求,用下面的代码即可:
Data$Test <- sub("\\|.*", "", Data$X)
正则表达式说明
\\|:转义匹配|符号(因为|在正则中是表示“或”的特殊字符,必须用反斜杠转义,而R语言里需要写两个反斜杠才能识别).*:匹配|之后的任意字符(.代表任意单个字符,*表示匹配零次或多次,也就是把|后面的所有内容都包含进来)- 将这一整段匹配到的内容替换为空字符串,就能得到
|左侧的目标内容。
如果习惯用stringr包处理字符串,也可以用这个方法:
library(stringr) Data$Test <- str_split_fixed(Data$X, "\\|", 2)[, 1]
这个方法是把每个字符串按|分割成两部分,直接取第一部分,效果和上面的正则替换完全一致。
内容的提问来源于stack exchange,提问作者Genetics
相关产品推荐
相关产品推荐

