在我们之前的教程(R 编程的语法和基础)中,我们了解了一个简单的 "hello world" 程序,它让你对如何使用 RStudio、基本语法以及 R 中如何编写注释有了简要的了解。本教程将带你了解 R 的一个基本概念,即 R 中的变量和常量。如果你有 Python、Go(Python、Go)等编程语言的任何先前知识,这将是一个巨大的优势,你将在短时间内成为 R 的高手。其他人也不要惊慌,R 是一种简单的语言,任何人都可以像蹒跚学步的孩子学走路一样学会它。那么,让我们开始我们的教程,一起前进吧。
变量是用于存储数据值、向量、值列表、数据集或 R 中对象的保留内存位置。与所有其他编程语言一样,内存位置中应有一些空间,可以容纳 R 编程中使用的不同值。这些内存位置由一个名称表示,该名称在程序中稍后被调用,以引用该地址空间并使用其包含的相应值。每当在 R 程序中创建变量时,都会保留用于存储该变量所含值的相应内存位置。换句话说,在创建变量时会保留一个内存位置。
一旦在 R 程序执行期间创建了变量,它会识别变量的数据类型(存储在变量内的数据类型,可能是整数(3)、浮点数(3.9)、字符串(“R”)),并分配相应的内存位置。

注意:只需理解 R 中变量的概念,忽略图片中变量的语法,你将在本教程的后续部分学习这些内容。
在 R 编程语言中,有三种类型的运算符支持变量的声明和初始化。这三种运算符如下:
使用上述运算符为变量赋值的语法。
//Assignment Operator (=)
<variable_name> = <value >
//Leftward Operator (<-)
<variable_name> <- <value>
//Rightward Operator (->)
<value> -> <variable_name>
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。
让我们看一下代码片段,看看这些代码是如何工作的

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


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



以下是 R 编程语言中遵循的命名约定
| 有效约定 | 无效约定 | 描述 |
|---|---|---|
| site_123, Site, site, SiteName, Sitename | 可用命名法 | |
| Language_1 | _language, Language$1 | 不允许以下划线 (_) 和除点号、下划线以外的符号开头。 |
| Language1 | 1language | 不允许以数字开头 |
| .site_123 | .123_site | 允许以点号开头,但点号后跟数字是不允许的。 |
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(_" >
查看代码片段以更好地理解代码的可视化。

作用域定义为变量的生命周期。作用域是变量有效或适用的区域。考虑有一个名为 sample() 的函数。在 sample() 函数内部,有一个名为 local_variable 的变量。变量 local_variable 的作用域仅限于 sample() 函数内部。这意味着 local_variable 的生命周期在该函数内。假设在 sample() 函数外部定义的任何其他函数试图访问这个声明为 sample() 函数局部变量的变量,它将无法访问。因为变量 local_variable 在该块外部是不可见的。这就是变量作用域的含义。而声明在 sample() 函数外部的变量,称为 global_variable,则可以在函数内部和外部轻松访问。
注意:作用域是声明、初始化和使用变量的区域或段。当该区域或块执行完毕时,变量会自动销毁。
| 变量作用域类型 | 描述 |
|---|---|
| 全局变量 | 可以从程序的任何部分访问和看到的变量。变量的生命周期贯穿整个程序执行过程。变量可以在函数内部或外部声明。变量可以从代码的任何区域(无论是函数内部还是外部)进行修改。 |
| 局部变量 | 只能在函数或代码段内访问的变量。变量的生命周期或作用域仅限于该函数内。变量在函数内部局部声明。变量只能在函数内部修改。 |
在下面的程序中,一个名为 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"
在我们之前讨论的同一个程序中,这里声明了一个 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 中,一切都是通过方法或函数来完成的。例如,print() 是一个用于在控制台打印给定文本的函数。同样,R 有成百上千个方法来执行指定的任务。在本节中,我们重点介绍一些与变量相关的常用方法、它们的用法和语法。请看下表
| 方法 | 描述 | 语法 |
|---|---|---|
| class() | 确定变量的数据类型 | class(variable_name) |
| Is() | 检查当前可用的变量 | Is(variable_name) |
| rm() | 移除/删除变量 | rm(variable_name) |
| paste() | 连接元素 | paste(varaible_1,varaible_2) |
在 R 编程语言中,可以使用 R 包或标准库支持的内置函数来确定变量的数据类型。支持识别变量数据类型的内置函数或方法是 class()。
class(variable_name)
• Keyword class defines class() to identify data type of variable
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 编程语言中,使用一个名为 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 编程语言中,可以通过使用一个名为 rm() 的内置函数,从程序中移除或删除不必要的或没有功能的变量。
rm(variable_name)
• Keyword rm defines rm() built in function that removes a variable.
这些是在程序执行期间由以下程序显示的可用的或活动的变量。
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 编程语言支持一个名为 paste() 的内置函数,用于在程序中连接一个或多个变量。两个变量 A 和 B 分别用值“Learn R in”和“Learn eTutorials”声明。在此程序中,使用左向运算符将值赋给变量 A 和 B。
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 支持两种类型的变量