R 语言 变量

  • 变量

    变量为我们提供了程序可以操纵的命名存储。R中的变量可以存储原子向量,原子向量组或许多Robject的组合。有效的变量名称由字母,数字和点或下划线字符组成。变量名称以字母或点开头,后跟数字。
    变量名称 是否有效 原因
    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 3
    var.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.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")
    
    尝试一下
    当我们执行以上代码时,它产生以下结果-
     
    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)