R语言ggplot调用数字开头列名绘图报错的解决方法
问题说明
- 操作场景:Excel数据导入RStudio后,使用ggplot2绘制条形图
- 运行报错的原始代码:
ggplot(data = Encuesta_BIDVOX)+geom_bar(mapping = aes(x=Cargo, fill=1_PC_Estandarizado))
- 控制台报错输出:
Error: unexpected input in "ggplot(data = Encuesta_BIDVOX)+geom_bar(mapping = aes(x=Cargo, fill=1_" - 已定位原因:填充属性映射的列名以数字开头,属于R默认不支持直接调用的非语法变量名;测试调用非数字开头的列无报错,数据集共48列以上,多数列均为数字开头的命名格式,需要可正常调用这类列的简易方案。
解决方法
两种方法都可实现,新手优先选第一种,不需要改动原始数据:
- 方法1:调用非合规列名时用反引号包裹(零修改原数据,随用随加)
R中所有不符合命名规则的变量(数字开头、带空格、含特殊符号),调用时用西文反引号(键盘左上角与波浪号~同按键的符号,注意不要和单引号、中文引号混淆)完整包裹列名即可正常识别,修改后的可运行代码如下:ggplot(data = Encuesta_BIDVOX) + geom_bar(mapping = aes(x = Cargo, fill = `1_PC_Estandarizado`)) - 方法2:导入数据时自动转换合规列名(一劳永逸,后续调用无需加特殊符号)
如果不想每次调用都加反引号,可以在读取Excel文件时开启列名检查,R会自动把所有不合规的列名转换成可直接调用的格式,以常用的readxl包读取Excel为例,导入代码添加check.names = TRUE参数即可:
转换规则为自动在数字开头的列名前加前缀# 首次使用先运行安装命令:install.packages("readxl") library(readxl) # 替换成你自己的文件实际存储路径 Encuesta_BIDVOX <- read_excel("你的Excel文件路径.xlsx", check.names = TRUE)X,例如原列名1_PC_Estandarizado会转换为X1_PC_Estandarizado,后续绘图直接写fill = X1_PC_Estandarizado即可正常运行。
内容的提问来源于stack exchange,提问作者Javier Carvajal
相关产品推荐
相关产品推荐

