反引号是针对不符合命名规则的变量名/参数名使用的,那么什么是命名规则呢?
- 变量名称可包含英文字母、数字、下划线和英文点号(句号) #所以不能有中文、空格、-存在哦
- 不能以数字或下划线开头 #开头必须是英文字母或者点
- 可以以点号开头,但点号后面的符号不能是数字
再之前笔记中提到check.names参数的用法,即:
读取数据时,check.names = T表示检查变量(列)的名称是否唯一且符合语法,如果不符合,列名将会被修正;当不希望列名发生改变时,将check.names参数设置为FALSE;
举例说明下:
> data1 <- read.xlsx(file,sheetIndex = 1,header = T,as.data.frame = T)
> colnames(data1)
[1] "No." "Component.Name" "Mass.Info" "Retention.Time" "QCRSD"
[6] "P.value" "Fold.change" "A.1" "A.2" "A.3"
[11] "B.1" "B.2" "B.3" "QC1" "QC2"
[16] "QC3"
> data2 <- read.xlsx(file,sheetIndex = 1,header = T,check.names=FALSE,as.data.frame = T)
> colnames(data2)
[1] "No." "Component Name" "Mass Info" "Retention Time" "QCRSD"
[6] "P-value" "Fold change" "A-1" "A-2" "A-3"
[11] "B-1" "B-2" "B-3" "QC1" "QC2"
[16] "QC3"
在file中,多个列名中有空格、-存在,不符合命名规则,故在默认check.names=T的情况下,该名称被修正为符合变量命名规则(即data1),而当要求R忽略变量命名是否符合语法时,即要求check.names=F,data2中列名是未修正的。通常项目分析中,会设置check.names=F,在后面调取数据时对变量名更为熟悉。
反引号在作为符合变量命名规则的变量分隔符时,看不出啥用,例如
> a <- "nihaoa"
> `a`
[1] "nihaoa"
> a
[1] "nihaoa"
当有其他需求/不走寻常路/想皮的时候,可以用反引号搞事情,例如
> a-1-1-1-1 <- "nihaoa"
Error in `*tmp*` - 1 : non-numeric argument to binary operator
> `a-1-1-1-1` <- "nihaoa"
> `a-1-1-1-1`
[1] "nihaoa"
> cbind(Column A = c(1, 2), Column B = c(2, 3))
Error: unexpected symbol in "cbind(Column A"
> cbind(`Column A` = c(1, 2), `Column B` = c(2, 3))
Column A Column B
[1,] 1 2
[2,] 2 3
读取数据框数据时:
> data2$No.
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
> data2$`Fold change`
[1] 1.4663510 1.4504885 1.4375640 1.4681523 1.7941558 1.3642889 1.6720380 1.5993460
[9] 1.1499409 1.3344826 2.6494646 1.6522183 1.6292714 0.7348555 1.2989730 1.5449945
[17] 1.2418808 1.5620597 0.6330296 1.3322369 2.1698138 1.4871685 1.3068256 1.2377978
[25] 0.9258138 1.1158941