R语言中变量命名规则与反引号的使用

反引号是针对不符合命名规则的变量名/参数名使用的,那么什么是命名规则呢?

  • 变量名称可包含英文字母数字下划线英文点号(句号)  #所以不能有中文、空格、-存在哦
  • 不能以数字或下划线开头     #开头必须是英文字母或者点
  • 可以以点号开头,但点号后面的符号不能是数字

 再之前笔记中提到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

猜你喜欢

转载自blog.csdn.net/Megajojo/article/details/81629450