变量为我们提供了程序可以操作的命名存储. R中的变量可以存储原子矢量,原子矢量组或许多Robjects的组合.有效的变量名称由字母,数字和点或下划线字符组成.变量名称以字母或点开头,后面没有数字.
变量名称 | 有效期 | 原因 |
---|---|---|
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")
当我们执行上面的代码时,它产生以下结果 :
[1] 0 1 2 3var.1 is 0 1 2 3 var.2 is learn R 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.5cat(" Now the class of var_x is ",class(var_x),"\n")var_x <- 27Lcat(" Next the class of var_x becomes ",class(var_x),"\n")
当我们执行上面的代码时,它会产生以下结果 :
The class of var_x is character Now the class of var_x is numeric Next the class of var_x becomes integer
查找变量
了解当前可用的所有变量工作区我们使用 ls()函数.此外,ls()函数可以使用模式来匹配变量名.
print(ls() )
当我们执行上面的代码时,它产生以下结果 :
[1] "my var" "my_new_var" "my_var" "var.1" [5] "var.2" "var.3" "var.name" "var_name2."[9] "var_x" "varname"
注意 : 它是一个示例输出,取决于在您的环境中声明的变量.
ls()函数可以使用模式来匹配变量名.
# List the variables starting with the pattern "var".print(ls(pattern = "var"))
当我们执行上面的代码时,它产生以下结果 :
[1] "my var" "my_new_var" "my_var" "var.1" [5] "var.2" "var.3" "var.name" "var_name2."[9] "var_x" "varname"
隐藏以点(.)开头的变量可以使用ls()函数的"all.names = TRUE"参数列出.
print( ls(all.name = TRUE))
当我们执行上面的代码时,它产生以下结果 :
[1] ".cars" ".Random.seed" ".var_name" ".varname" ".varname2" [6] "my var" "my_new_var" "my_var" "var.1" "var.2" [11]"var.3" "var.name" "var_name2." "var_x"
删除变量
可以使用 rm()功能.下面我们删除变量var.3.在打印时抛出变量错误的值.
rm(var.3)print(var.3)
当我们执行上面的代码时,它产生以下结果 :
[1] "var.3"Error in print(var.3) : object 'var.3' not found
所有变量都可以通过一起使用 rm()和 ls()功能删除.
rm(list = ls())print(ls())
当我们执行上面的代码时,它产生以下结果 :
character(0)