使用readxl导入数据集时列名出现\r\n\t特殊字符的原因及解决咨询
解决readxl导入Excel列名含特殊字符的问题
你遇到的\r\n\t是回车、换行、制表符这类不可见控制字符,是原始Excel文件的列名自带的,和SQL遗留或编码关系不大,且readxl目前已移除encoding参数,以下是几种直接有效的解决办法:
方法1:用janitor包自动清理所有列名
janitor包的clean_names()能自动去除特殊字符、转换为规范的小写蛇形命名,操作简单:
library(tidyverse) library(readxl) library(janitor) df <- read_xlsx("Filepath/Diamond Datasheet.xlsx") %>% clean_names()
处理后第一列会变为country,年份列会转为x2010这类格式。
方法2:手动重命名目标列
若仅需修改第一列,直接用rename()指定新列名即可:
df <- read_xlsx("Filepath/Diamond Datasheet.xlsx") %>% rename(country = `\r\n\tCountry`)
注意原列名需放在反引号中,因为包含特殊字符。
方法3:导入时自定义列名
在read_xlsx()中通过col_names参数手动定义所有列名,跳过原始脏表头:
col_names <- c("country", 2010:2020) df <- read_xlsx("Filepath/Diamond Datasheet.xlsx", col_names = col_names, skip = 1)
skip=1表示跳过原始表头行,使用自定义列名替代。
批量清理列名特殊字符(自定义逻辑)
如果需要批量移除所有列名中的控制字符,可使用字符串处理函数:
library(stringr) df <- read_xlsx("Filepath/Diamond Datasheet.xlsx") names(df) <- str_replace_all(names(df), "[\\r\\n\\t]", "")
该代码会删除所有列名里的回车、换行、制表符。
内容的提问来源于stack exchange,提问作者Jay Bee
相关产品推荐
相关产品推荐

