R语言str_replace_all函数异常:点替换下划线时全字符被替换
问题解决:R中替换点为下划线时全字符被替换的问题
原因很直接:str_replace_all的匹配模式默认是正则表达式,而正则里的.是特殊字符,代表任意单个字符,所以你写的"."会匹配字符串里的每一个字符,导致全部被替换成_。而替换"A"正常是因为"A"不属于正则特殊字符,会被当作普通字符串匹配。
解决方法有两种:
- 方法一:用
fixed()包裹匹配字符串,明确告诉函数这是普通文本,不是正则模式:
x <- "TP.MK.CUM.YTL" y <- str_replace_all(x, fixed("."), "_") y # [1] "TP_MK_CUM_YTL"
- 方法二:在正则里对点进行转义,R中需要用双反斜杠
\\.来表示实际的点字符:
x <- "TP.MK.CUM.YTL" y <- str_replace_all(x, "\\.", "_") y # [1] "TP_MK_CUM_YTL"
内容的提问来源于stack exchange,提问作者pimaniye41
相关产品推荐
相关产品推荐

