在DataFrame中检测姓名间多余空格时遇报错,求排查解决
问题排查与解决
报错原因分析
across()函数误用:across()是用于批量处理DataFrame现有列的工具,新增列直接在mutate()里定义即可,无需嵌套across(),这是触发报错的核心原因。- 不存在
countSpaces()函数:R基础包和dplyr均无此函数,需用字符串处理函数实现空格统计。 - 列引用方式错误:
mutate()中直接写列名即可按行处理,无需用df[["name"]]这种全局引用方式。
正确实现代码
场景1:检测总空格数大于1的行
如果“多余空格”指姓名中总空格数超过1,使用以下代码:
library(dplyr) library(stringr) # 原始数据 df <- data.frame(name=c("Tijor Maikin","McKaren Blanken","Matrick Powell","Larry Bishop","Johnson Patterson","Richard pack","Nancy john Alli","McLaura kukeza ","Shellby sen", "John N. Murphy", "Alex Hr Nelson")) # 新增标记列 df1 <- df %>% mutate(`new name` = ifelse(str_count(name, "\\s") > 1, "have spaces", ""))
场景2:检测连续空格(两个及以上)的行
如果要标记存在连续空格的行(比如Shellby sen里的双空格),使用以下代码:
df2 <- df %>% mutate(`new name` = ifelse(str_detect(name, "\\s{2,}"), "have consecutive spaces", ""))
期望输出示例(场景1)
| name | new name |
|---|---|
| Tijor Maikin | |
| McKaren Blanken | |
| Matrick Powell | |
| Larry Bishop | |
| Johnson Patterson | |
| Richard pack | |
| Nancy john Alli | have spaces |
| McLaura kukeza | |
| Shellby sen | have spaces |
| John N. Murphy | have spaces |
| Alex Hr Nelson | have spaces |
内容的提问来源于stack exchange,提问作者samrr_tr
相关产品推荐
相关产品推荐

