检查name列双空格时出错,寻求R语言代码修正方案
问题修正方案
代码错误分析
across用法错误:across用于对已有列批量处理,新增列无需使用它,直接在mutate中赋值新列即可。- 空格检测逻辑偏差:原
countSpaces统计的是总空格数,但需求是检测连续双空格/多余空格,总空格数大于1不代表存在连续空格(比如"a b c"有2个单独空格,但无连续空格)。
修正后的代码
df7 <- data.frame(name_1 = c("ttt, hbue","mna,ssu huna","vga, pahk","hja, dhyn","cct, indo","nhu,nhuv")) # 检测字符串中是否存在连续双空格 has_double_space <- function(s) { grepl(" ", s) } name_col <- "name_1" # 新增标识列 df7 <- df7 %>% mutate(`1. double space in name` = ifelse(has_double_space(.data[[name_col]]), "1. name contains unnecessary space", ""))
代码说明
- 用
grepl(" ", s)直接检测字符串中是否存在连续双空格,逻辑更贴合需求。 - 用
.data[[name_col]]引用列名,符合tidyverse规范,避免直接引用全局环境变量。 - 去掉多余的
across,直接在mutate中创建新列,语法正确。
内容的提问来源于stack exchange,提问作者samrr_tr
相关产品推荐
相关产品推荐

