我的 .xlsx Excel 工作表中的列名称包含空格。如何自动将空格替换为“_”或“.”?我想使用,read_excel因为我需要在 Excel 工作表中指定一个范围。
.name_repair这是使用参数 with来做到这一点的方法read_excel():
创建用于导入的 Excel 文件:
# Example setup
mtcars = datasets::mtcars
names(mtcars) = paste(names(mtcars), LETTERS[1:length(mtcars)])
head(mtcars)
mpg A cyl B disp C hp D drat E wt F qsec G vs H am I gear J carb K
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
temp = tempfile(fileext = ".xlsx")
writexl::write_xlsx(mtcars, temp)
Run Code Online (Sandbox Code Playgroud)
读取数据有几种不同的方式:
# With using the default for .name_repair ("unique" for read_excel())
head(readxl::read_excel(temp))
# A tibble: 6 x 11
`mpg A` `cyl B` `disp C` `hp D` `drat E` `wt F` `qsec G` `vs H` `am I` `gear J` `carb K`
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 21 6 160 110 3.9 2.62 16.5 0 1 4 4
2 21 6 160 110 3.9 2.88 17.0 0 1 4 4
3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1
5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2
6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1
# Adding periods using using .name_repair
head(readxl::read_excel(temp, .name_repair = "universal"))
# A tibble: 6 x 11
mpg.A cyl.B disp.C hp.D drat.E wt.F qsec.G vs.H am.I gear.J carb.K
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 21 6 160 110 3.9 2.62 16.5 0 1 4 4
2 21 6 160 110 3.9 2.88 17.0 0 1 4 4
3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1
5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2
6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1
# Using a custom function to add underscores
head(readxl::read_excel(temp, .name_repair = function(x) gsub("\\s+", "_", x)))
# A tibble: 6 x 11
mpg_A cyl_B disp_C hp_D drat_E wt_F qsec_G vs_H am_I gear_J carb_K
<dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 21 6 160 110 3.9 2.62 16.5 0 1 4 4
2 21 6 160 110 3.9 2.88 17.0 0 1 4 4
3 22.8 4 108 93 3.85 2.32 18.6 1 1 4 1
4 21.4 6 258 110 3.08 3.22 19.4 1 0 3 1
5 18.7 8 360 175 3.15 3.44 17.0 0 0 3 2
6 18.1 6 225 105 2.76 3.46 20.2 1 0 3 1
# file.remove(temp)
Run Code Online (Sandbox Code Playgroud)