You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用dtplyr处理含空格列名时报错:Object '`aa aa`' not found

解决dtplyr处理带空格列名时的分组错误

你遇到的错误是因为dtplyr对反引号包裹列名的解析逻辑和预期不同,导致它把包含反引号的字符串当作列名去查找,而实际列名并不包含反引号。

解决方案

以下几种方式都能正确识别带空格的列名:

  1. 用双引号包裹列名
df_dt %>% group_by("aa aa") %>% slice(n())
  1. 使用all_of()函数(推荐,符合tidyverse规范)
df_dt %>% group_by(all_of("aa aa")) %>% slice(n())
  1. 结合rlang::sym()进行符号转换
library(rlang)
df_dt %>% group_by(!!sym("aa aa")) %>% slice(n())

原因说明

当你写group_by(aa aa)时,dtplyr错误地将`aa aa`(带有反引号的完整字符串)视为要匹配的列名,而你的数据框实际列名是aa aa(无反引号),因此触发了"找不到对象"的错误。上述方法都能绕过这个解析问题,正确匹配目标列。

正确运行结果

执行正确代码后,会返回每个aa aa分组的最后一行:

# Source: local data table [2 x 2]
# Groups: aa aa
# Call:   `_DT1`[, .SD[.N], by = `aa aa`]

  `aa aa` `bb bb`
    <dbl>   <int>
1       1       5
2       3       6

内容的提问来源于stack exchange,提问作者doraemon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 11:02:16