变量提供了程序可以操作的命名存储。R语言中的变量可以存储原子向量,原子向量组或许多R对象的组合。有效的变量名称应该是由字母,数字和点或下划线字符组成。 变量名称以字母开头,或者点后面不带数字。如下一些示例 -
变量名 | 合法性 | 原因 |
---|---|---|
var_name2. |
有效 | 由字母,数字,点和下划线组成 |
var_name% |
无效 | 含有字符“%” 因此无效。只允许点(. )和下划线(_ )组成。 |
2var_name |
无效 | 以数字开头,因此无效。 |
.var_name , var.name |
有效 | 可以以点(. )开头,但点(. )后面不应是数字。 |
.2var_name |
无效 | 以点(. )但后跟一个数字使其无效。 |
_var_name |
无效 | 以下划(_ )开始因此无效。 |
变量可以使用向左,向右和等于运算符分配值。 可以使用print()
或cat()
函数打印变量的值。 cat()
函数将多个变量或项目组合成一个连续的打印输出。
# Assignment using equal operator. var.1 = c(0,1,2,3) # Assignment using leftward operator. var.2 <- c("learn","R") # Assignment using rightward operator. c(TRUE,1) -> var.3 print(var.1) cat ("var.1 is ", var.1 ,"\n") cat ("var.2 is ", var.2 ,"\n") cat ("var.3 is ", var.3 ,"\n")
执行上面示例代码,得到以下结果 -
> print(var.1) [1] 0 1 2 3 > cat ("var.1 is ", var.1 ,"\n") var.1 is 0 1 2 3 > cat ("var.2 is ", var.2 ,"\n") var.2 is learn R > cat ("var.3 is ", var.3 ,"\n") var.3 is 1 1
注 - 向量
c(TRUE,1)
具有逻辑和数字类的混合。所以逻辑类被强制为数字类,使TRUE
为1
。
在R中,变量本身没有被声明为任何数据类型,而是获取分配给它的R对象的数据类型。 所以R被称为动态类型语言,这意味着我们可以在程序中使用它时一次又一次地改变同一个变量的变量的数据类型,或者使用同一个变量来存储任何数据类型。
var_x <- "Hello" cat("The class of var_x is ",class(var_x),"\n") var_x <- 34.5 cat(" Now the class of var_x is ",class(var_x),"\n") var_x <- 27L cat(" Next the class of var_x becomes ",class(var_x),"\n")
执行上面示例代码,得到以下结果 -
> var_x <- "Hello" > cat("The class of var_x is ",class(var_x),"\n") The class of var_x is character > > var_x <- 34.5 > cat(" Now the class of var_x is ",class(var_x),"\n") Now the class of var_x is numeric > > var_x <- 27L > cat(" Next the class of var_x becomes ",class(var_x),"\n") Next the class of var_x becomes integer >
如想要知道工作区中当前可用的所有变量,可使用ls()
函数。ls()
函数也可以使用模式来匹配变量名。
print(ls());
执行上面示例代码,得到以下结果 -
> print(ls()); [1] "string" "var.1" "var.2" "var.3" "var_x"
注意 - 根据您的环境中声明的变量可能所有不同,所以您的输出和这里输出结果可能不太一样。
ls()
函数可以使用模式来匹配变量名。
# List the variables starting with the pattern "var". print(ls(pattern = "var"))
执行上面示例代码,得到以下结果 -
> print(ls(pattern = "var")) [1] "var.1" "var.2" "var.3" "var_x"
以点(.
)开头的变量是隐藏的,它们可以使用ls()
函数的“all.names = TRUE”
参数列出。如下所示 -
print(ls(all.names = TRUE));
执行上面示例代码,得到以下结果 -
> print(ls(all.names = TRUE)); [1] ".var_no" ".var1" "string" "var.1" "var.2" "var.3" "var_x" >
可以使用rm()
函数删除变量。下面假设要删除变量var.3
。 在打印时抛出变量错误的值。
rm(var.3) print(var.3)
执行上面查询代码,得到以下结果 -
> rm(var.3) > print(var.3) Error in print(var.3) : 找不到对象'var.3'
删除所有变量可以通过使用rm()
和ls()
函数一起来完成。
rm(list = ls()) print(ls())
执行上面示例代码,得到以下结果 -
> rm(list = ls()) > print(ls()) character(0)