R编程中的变量


2022年1月13日, 学习 eTutorial
2719

在我们之前的教程(R 编程的语法和基础)中,我们了解了一个简单的 "hello world" 程序,它让你对如何使用 RStudio、基本语法以及 R 中如何编写注释有了简要的了解。本教程将带你了解 R 的一个基本概念,即 R 中的变量和常量。如果你有 Python、Go(PythonGo)等编程语言的任何先前知识,这将是一个巨大的优势,你将在短时间内成为 R 的高手。其他人也不要惊慌,R 是一种简单的语言,任何人都可以像蹒跚学步的孩子学走路一样学会它。那么,让我们开始我们的教程,一起前进吧。

R 中的变量是什么?

变量是用于存储数据值、向量、值列表、数据集或 R 中对象的保留内存位置。与所有其他编程语言一样,内存位置中应有一些空间,可以容纳 R 编程中使用的不同值。这些内存位置由一个名称表示,该名称在程序中稍后被调用,以引用该地址空间并使用其包含的相应值。每当在 R 程序中创建变量时,都会保留用于存储该变量所含值的相应内存位置。换句话说,在创建变量时会保留一个内存位置。

一旦在 R 程序执行期间创建了变量,它会识别变量的数据类型(存储在变量内的数据类型,可能是整数(3)、浮点数(3.9)、字符串(“R”)),并分配相应的内存位置。

R Variables

注意:只需理解 R 中变量的概念,忽略图片中变量的语法,你将在本教程的后续部分学习这些内容。

如何在 R 中声明和初始化变量?

在 R 编程语言中,有三种类型的运算符支持变量的声明和初始化。这三种运算符如下:

  1. 赋值运算符 (=)
  2. 左向运算符 (<-)
  3. 右向运算符(->)

使用上述运算符为变量赋值的语法


//Assignment Operator (=)
<variable_name>     =    <value >

//Leftward Operator (<-)
<variable_name>    <-    <value>

//Rightward Operator (->)
<value>     ->    <variable_name>

 

在 R 中声明和初始化的程序


site = "Welcome to Learn eTutorials"  #using  = operator
print(site)

language <- "R programming  "         # using <- operator
print(language)

"Variables in R" -> Tutorial                #using -> operator
print(Tutorial)
 

输出


[1] "Welcome to Learn eTutorials"
[1] "R programming  "
[1] "Variables in R"

在上述程序中,创建了一个名为 site 的字符串数据类型变量。值“Welcome to Learn eTutorials”通过“=”等于或赋值运算符赋给 site 变量。同样,创建了另一个变量 language,它持有值“R programming ”。在这些代码行中,左向运算符(“ <- ”)将值赋给变量 language。在最后几行代码中,你可以看到程序以初始化值“Variables in R”开始,后面跟着一个右向运算符“->”,它将值赋给变量 Tutorial。

让我们看一下代码片段,看看这些代码是如何工作的

R Variables

如何在 R 脚本中编写变量代码?

让我们从经典的 hello world 程序 开始。你将创建一个名为 hello world 的字符串数据类型变量并打印结果语句。为了方便地编辑我们的代码,我们将首先熟悉 RStudio 和变量的使用。

  1. 打开一个 R 脚本文件。
    R Variables
  2. 点击 R 脚本文件,会弹出一个新的面板,你可以在那里轻松开始编写代码。
    R Variables

    创建一个名为 VARIABLE 的变量,存储一个字符串数据类型的值“hello world!!!”。在 R 编程语言中,我们使用不同的运算符为变量赋值,我们将在本教程后面讨论这些运算符。让我们看一个使用“=”赋值运算符的简单示例,它将值“hello world!!!”赋给 VARIABLE,并使用 print() 函数显示输出。

    将 hello world!!! 存储在 VARIABLE 中的程序

    
    VARIABLE = "Hello world"
    print(VARIABLE)
     
    
  3. 在 R 脚本文件面板中编写上述代码并运行代码。点击代码右侧的运行标签。
    R Variables
  4. 点击运行后,打开控制台,会显示代码和相应的输出。
    R Variables
  5. 输入 VARIABLE 并运行代码以观察变化。
    R Variables

R 中的命名约定

以下是 R 编程语言中遵循的命名约定

  1. 变量名只能包含字母 ‘a-z’ 或 ‘A-Z’ 或数字 0-9 以及字符下划线 ‘_’。例如 site_123, Site, site
  2. 变量是区分大小写的。例如 SITE, Site, site 是不同类型和值的变量。
  3. 关键字不能用作变量。例如 if, NULL, TRUE, FALSE
  4. 变量名不允许以数字开头。例如 1language
  5. 变量名不允许以下划线开头,它们是意外的标记,会导致程序出错(bug)。例如 _language
  6. 变量名可以以点号开头。例如    .site_123
  7. 在 R 中,只有点号 (.) 和下划线 (_) 符号被允许用于变量声明。例如 Language$1, Language#$1
  8. 变量名可以是大写和小写字母的混合。例如 Variable Name, varaibale_name, VARIABLE, variable name。
     
有效约定 无效约定 描述
site_123, Site, site, SiteName, Sitename   可用命名法
Language_1 _language, Language$1 不允许以下划线 (_) 和除点号、下划线以外的符号开头。
Language1 1language 不允许以数字开头
.site_123 .123_site 允许以点号开头,但点号后跟数字是不允许的。

显示 R 中命名约定的程序


VARIABLE = "Hello world 1"
print(VARIABLE)

var1 = "Hello  world 2 "
print(var1)

variable_1 = "Hello  world 3"
print(variable_1)

VariableName = "Hello  world 4"
print(VariableName)

varaible_name ="Hello  world 5"
print(varaible_name)

_123variable = "Hello  world 6"
print(_123variable )
 

输出


 [1] "Hello world 1"] "Hello  world 2 "
[1] "Hello  world 3"
[1] "Hello  world 4"
[1] "Hello  world 5"
> print(_123variable )
Error: unexpected input in "print(_"
>

查看代码片段以更好地理解代码的可视化。

R Variables

R 中变量的作用域是什么?

作用域定义为变量的生命周期。作用域是变量有效或适用的区域。考虑有一个名为 sample() 的函数。在 sample() 函数内部,有一个名为 local_variable 的变量。变量 local_variable 的作用域仅限于 sample() 函数内部。这意味着 local_variable 的生命周期在该函数内。假设在 sample() 函数外部定义的任何其他函数试图访问这个声明为 sample() 函数局部变量的变量,它将无法访问。因为变量 local_variable 在该块外部是不可见的。这就是变量作用域的含义。而声明在 sample() 函数外部的变量,称为 global_variable,则可以在函数内部和外部轻松访问。

注意:作用域是声明、初始化和使用变量的区域或段。当该区域或块执行完毕时,变量会自动销毁。

变量作用域类型 描述
全局变量 可以从程序的任何部分访问和看到的变量。变量的生命周期贯穿整个程序执行过程。变量可以在函数内部或外部声明。变量可以从代码的任何区域(无论是函数内部还是外部)进行修改。
局部变量 只能在函数或代码段内访问的变量。变量的生命周期或作用域仅限于该函数内。变量在函数内部局部声明。变量只能在函数内部修改。

如何在 R 中声明全局变量?

在下面的程序中,一个名为 global_variable 的变量被声明并初始化为值 45。该程序包含一个函数 sample(),函数内部提供了对 global_variable 的打印语句,其输出如下所示。稍后在程序中,在 sample() 函数外部,global_variable 的值被更新为“hello”。

这个例子证明了全局变量的作用域既在函数内部也在函数外部,全局声明的变量可以从这些地方被访问和看到。
 

显示全局变量声明的程序


# R program to declare  global variables
 
# global variable
global_variable = 45
 
# global variable accessed from a function sample()
sample = function(){
print(global_variable)
}
sample() 
 
# modified  global variable value
global_variable= "hello"
sample()

 

输出


[1] 45
[1] "hello"

如何在 R 中声明局部变量?

在我们之前讨论的同一个程序中,这里声明了一个 local_variable 并在函数 sample() 内部赋值为 “hello I am local variable”。程序执行并显示该值,随后 local_variable 的值在 sample() 函数内部被修改为 “hello my value got modified”。

局部变量只能在局部访问,并且只能在定义它的函数内部进行修改。

显示局部变量声明的程序


# R program to declare  local variables

 
# local variable accessed within a function sample()
sample = function(){
local_variable <- "hello i am local variable"
print(local_variable)

# modified local variable value
local_variable  <-"hello my value got modified"
print(local_variable)

}
 

输出


[1] "hello i am local variable"
[1] "hello my value got modified"

R 中变量使用的方法有哪些?

与其他编程语言一样,R 编程也拥有一套丰富的内置函数,也称为方法。方法是已经定义好的函数,用于执行用户需要的特定任务。在 R 中,一切都是通过方法或函数来完成的。例如,print() 是一个用于在控制台打印给定文本的函数。同样,R 有成百上千个方法来执行指定的任务。在本节中,我们重点介绍一些与变量相关的常用方法、它们的用法和语法。请看下表

方法 描述 语法
class() 确定变量的数据类型 class(variable_name)
Is() 检查当前可用的变量 Is(variable_name)
rm() 移除/删除变量 rm(variable_name)
paste() 连接元素 paste(varaible_1,varaible_2)

如何在 R 中识别变量的数据类型?

在 R 编程语言中,可以使用 R 包或标准库支持的内置函数来确定变量的数据类型。支持识别变量数据类型的内置函数或方法是 class()


class(variable_name)
• Keyword class defines class() to identify data type of variable
 

在 R 中识别变量数据类型的程序


site = "Welcome to Learn eTutorials"  #using  = operator
print(site)

language <- "R programming  "         # using <- operator
print(language)

"Variables in R" -> Tutorial                #using -> operator
print(Tutorial)


cat("The class of variable site is ",class(site),"\n")

cat(class(language),"\n")

cat("The class of Tutorial is ", class(Tutorial) , "\n ")
 

输出


[1] "Welcome to Learn eTutorials"
[1] "R programming  "
[1] "Variables in R"
The class of variable site is  character 
character 
The class of Tutorial is  character

如何在 R 中检查可用变量?

在 R 编程语言中,使用一个名为 ls() 的内置函数来确定可用变量。


ls(variable_name)
• Keyword Is  defines  ls() function to check available variables in R program 
 

"language" "site.1"   "site.2"   "Tutorial"
 

这些是在程序执行期间由以下程序显示的可用的或活动的变量。

检查可用变量的程序


site.1 = "Welcome to Learn eTutorials"  #using  = operator
print(site.1)

site.2 = "Learn eTutorials"
print(site.2)


language <- "R programming  "         # using <- operator
print(language)

"Variables in R" -> Tutorial                #using -> operator
print(Tutorial)

print(ls())      #To find available variables
 

输出


[1] "Welcome to Learn eTutorials"
[1] "Learn eTutorials"
[1] "R programming  "
[1] "Variables in R"
[1] "language" "site.1"   "site.2"   "Tutorial"

如何在 R 中移除/删除变量?

在 R 编程语言中,可以通过使用一个名为 rm() 的内置函数,从程序中移除或删除不必要的或没有功能的变量。


rm(variable_name)
• Keyword rm defines rm() built in function that removes a variable.
 

这些是在程序执行期间由以下程序显示的可用的或活动的变量。

在 R 中移除/删除变量的程序


site.1 = "Welcome to Learn eTutorials"  #using  = operator
print(site.1)

site.2 = "Learn eTutorials"
print(site.2)


language <- "R programming  "         # using <- operator
print(language)

"Variables in R" -> Tutorial                #using -> operator
print(Tutorial)
 

输出


[1] "Welcome to Learn eTutorials"
[1] "Learn eTutorials"
[1] "R programming  "
[1] "Variables in R"

让我们添加下面给出的内置函数 rm() 来删除一个变量,其中括号内是要从程序中移除的变量的名称。


rm(site)
print(site)
 

当添加这些代码行时,名为 site 的变量将从程序中移除。你可以在程序执行后看到下面相应的输出。


[1] "Welcome to Learn eTutorials"
[1] "Learn eTutorials"
[1] "R programming  "
[1] "Variables in R"
Warning message:
In rm(site) : object 'site' not found
Error in print(site) : object 'site' not found
Execution halted

如何在 R 中连接变量?

R 编程语言支持一个名为 paste() 的内置函数,用于在程序中连接一个或多个变量。两个变量 A 和 B 分别用值“Learn R in”和“Learn eTutorials”声明。在此程序中,使用左向运算符将值赋给变量 A 和 B。

在 R 中连接变量的程序


A <- "Learn R in"
B <- "Learn eTutorials"

paste(A, B)

当程序执行时,内置方法 paste() 会连接变量 A 和 B,产生如下所示的输出


[1] "Learn R in Learn eTutorials"

如何为多个变量赋相同的值?

R 支持单行赋值给多个具有相同值的变量。三个名为 first_variable、second_variable、third_variable 的变量使用左向运算符被赋予了相同的值 "helloo it is easy right!!!!"。

为多个变量赋值的程序


# "Multiple value in single line"
first_variable <- second_variable <- third_varaible <- "helloo it is easy right!!!!"

# Print  values of variables
cat ("The first variable is ",first_variable,"\n")
cat ("The first variable is ",second_variable,"\n")
cat ("The first variable is ",third_varaible,"\n")
 

输出


The first variable is helloo it is easy right!!!! 
The first variable is helloo it is easy right!!!! 
The first variable is helloo it is easy right!!!!

R 中的变量有哪些类型?

R 支持两种类型的变量

  1. 数值型:数值型或量化变量存储用于执行算术运算(如加、减、除、乘)或求平均值等的值。数值型变量又分为连续型和离散型。
    • 连续变量是可以测量的类型,如身高,它在给定范围内可以取无限个值。
    • 离散数值变量是可以计数的特定值集合。
  2. 分类:分类或定性变量取有限数量的不同类别。