dplyr无法识别数据框中已存在的channelTitle列问题求助
列名无法识别问题排查方案
- 列名存在隐藏字符
先执行colnames(videos_year)查看实际列名,确认channelTitle前后是否有空格、特殊符号或大小写偏差,也可以运行which(colnames(videos_year) == "channelTitle")校验列是否真实匹配。如果存在多余字符,可直接重命名列,或使用janitor::clean_names()统一标准化列名:# 标准化列名示例 videos_year <- videos_year %>% janitor::clean_names() # 标准化后列名会转为蛇形命名channel_title,同步修改后续代码中的列名即可 - 数据框处于分组状态
若之前对videos_year执行过group_by()操作且未解除分组,会导致列引用异常,添加ungroup()解除分组即可:videos_year %>% ungroup() %>% count(channelTitle) %>% arrange(desc(n)) %>% mutate(channelTitle = reorder(channelTitle, n)) %>% head(10) %>% ggplot(aes(channelTitle, n)) + geom_col() + coord_flip() + ggtitle(label = '上传视频数最多的前10个频道') + xlab(label = '频道名称') + ylab(label = '视频数量') - 环境变量名冲突
如果全局环境中存在同名的channelTitle变量,会导致dplyr求值优先级异常,使用.data代词明确指定引用数据框内的字段即可:videos_year %>% count(.data[["channelTitle"]])
注:原代码中
ggtitle的chennels为拼写错误,可根据需求修正;且你未在geom_col中映射fill字段,后续labs(fill = ...)参数不会生效,可直接删除。
内容的提问来源于stack exchange,提问作者Johns Inos
相关产品推荐
相关产品推荐

