为了显示目的,我试图在数据帧列名中插入一个反斜杠(\)。
如果我只是插入反斜杠('\'),那么由于某种原因,它将从列名中消失:
x <- head(mtcars[ , 1:3])
names(x)[1] <- "back \ slash"
##backslash missing
names(x)[1]
# [1] "back slash"
x
# back slash cyl disp
# Mazda RX4 21.0 6 160
# Mazda RX4 Wag 21.0 6 160
# Datsun 710 22.8 4 108
# Hornet 4 Drive 21.4 6 258
# Hornet Sportabout 18.7 8 360
# Valiant 18.1 6 225但是,如果我试图转义反斜杠('\\'),则在列名中得到两个反斜杠:
names(x)[1] <- "back \\ slash"
##two backslashes
names(x)[1]
# [1] "back \\ slash"
x
# back \\ slash cyl disp
# Mazda RX4 21.0 6 160
# Mazda RX4 Wag 21.0 6 160
# Datsun 710 22.8 4 108
# Hornet 4 Drive 21.4 6 258
# Hornet Sportabout 18.7 8 360
# Valiant 18.1 6 225如何将one反斜杠(\)插入数据帧列名?
发布于 2020-08-18 23:04:14
既然您打算将它与knitr::kable一起使用,那么请尝试如下:
x <- mtcars[1:3,1:3]
x <- mtcars[1:4,1:3]
knitr::kable(x, col.names=replace(names(x), 1, "foo \\ bar"))
# | | foo \ bar| cyl| disp|
# |:--------------|---------:|---:|----:|
# |Mazda RX4 | 21.0| 6| 160|
# |Mazda RX4 Wag | 21.0| 6| 160|
# |Datsun 710 | 22.8| 4| 108|
# |Hornet 4 Drive | 21.4| 6| 258|发布于 2020-08-18 22:46:50
R的默认行为是打印转义字符,即使在字符向量中也是如此:
c("sd\\sd")
#> [1] "sd\\sd"
nchar("sd\\sd")
#> [1] 5
# "sd\\sd" is 6 character if you count the second backslash
# while cat prints the actual string
cat(c("sd\\sd"))
#> sd\sdhttps://stackoverflow.com/questions/63477540
复制相似问题