如何在R中将不同长度的空白字符替换为单个空格
R中将不等长连续空白替换为单个空格的解决方案
基础R原生方案(无需额外安装包)
你之前的gsub写法失效的原因是正则仅匹配单个空白字符,逐个替换后无法压缩连续空格,只需添加+量词匹配连续1次及以上的空白即可:
# 仅将连续空白替换为单个空格,保留首尾空格(如果存在) df$column1 <- gsub("[[:space:]]+", " ", df$column1) # 如需同时去除字符串首尾的多余空格,可组合trimws使用 df$column1 <- trimws(gsub("[[:space:]]+", " ", df$column1))
小提示:如果仅需要处理普通空格,无需匹配制表符、换行等其他空白类型,可将正则简化为
" +"。
stringr包简洁方案
如果使用tidyverse生态的stringr包,可直接调用封装好的str_squish()函数,一步完成「连续空白替换为单个空格+去除首尾空格」操作:
library(stringr) df$column1 <- str_squish(df$column1)
处理后输出效果
两种方案处理后打印数据集的结果一致:
print(df) column1 1 A B 2 C D 3 E F 4 G H 5 I J 6 K L 7 M N
内容的提问来源于stack exchange,提问作者EB2127
相关产品推荐
相关产品推荐

