如何用R去除CSV文件中键盘无对应按键的长破折号
在R中去除长破折号(—)的正确方法
你之前的代码无法生效,核心原因是用短破折号-匹配长破折号—,两者是完全不同的字符:长破折号的Unicode编码为\u2014,和普通短破折号不属于同一字符,因此匹配失败。另外你最后一段代码存在语法错误,str_replace_all的参数顺序和across的函数调用方式不对。
以下是两种可行的正确方案:
方案1:使用Unicode编码匹配
直接通过长破折号的Unicode编码\u2014进行匹配替换,这种方式无需输入特殊字符,适合键盘无法直接打出长破折号的场景:
# 确保已加载dplyr和stringr包 library(dplyr) library(stringr) Port2 <- Port %>% mutate(across(everything(), ~str_replace_all(.x, "\u2014", "")))
方案2:直接复制粘贴长破折号匹配
如果能从数据或其他地方复制到长破折号—,也可以直接用该字符进行替换:
Port2 <- Port %>% mutate(across(everything(), ~str_replace_all(.x, "—", "")))
注意事项
- 必须提前加载
dplyr和stringr包,否则mutate、across、str_replace_all这些函数会报错。 across(everything())会对数据框的所有列进行替换操作,如果只需要处理特定列,可以把everything()换成列名向量,比如c(col1, col2)。
内容的提问来源于stack exchange,提问作者RayzedByRobots
相关产品推荐
相关产品推荐

