R语言七天入门教程二:认识变量与运算符

一、什么是变量
1、变量

顾名思义,我们可以将变量理解为“可以改变的量”,是计算机语言中能储存计算结果或能表示值的抽象概念。这里的值可以是数字,也可以是其他数据类型(例如,字符串,逻辑类型等)。变量在程序运行过程中,其值是可以发生改变的。

2、常量

对于常量,我们可以将其理解为”固定的量“,会直接写在程序中。在程序运行过程中,常量的值不会发生变化。例如,数值123在程序运行过程中永远都是123,而不会变成其他值。

3、变量的命名

对于一个变量,取一个好名字是非常值得引起重视的。在给变量命名时,理应遵循以下准则:尽量避免缩写、变量名要和该变量的含义有联系。在R语言中,有效的变量名称由字母,数字以及点号 . 或下划线 _ 组成,且需以字母或点开头。我们需要完全记住理解这句话,只要我们在命名时永远遵循一个规则即可:变量名以字母开头,用下划线连接各个部分,数字放到变量名末尾。一些典型的变量名如下表所示:

变量名 是否正确 评价
123_name 错误 变量名不能以数字开头
abcde 正确但不规范 从变量名看不出变量的含义
cur_user_name_list 正确且规范 从变量名可以看出该变量的含义为:当前用户名列表
cur_user_name_1 正确且规范 从变量名可以看出该变量的含义为:当前的一个用户名
cur_user_name% 错误 %为非法字符

在编程中,有一些特殊的字母作为变量名时,通常会具有特殊的含义,总结如下:

变量名 特殊含义
i, j, k 循环计数变量
temp 临时变量
index 索引
x 输入或绘图时横轴的数据
y 输出或绘图时纵轴的数据
z 绘图时z轴的数据
二、数据类型

在编程语言中,每一个数据都有其对应的数据类型(数据类型可以看作是不同类别的数据,针对不同的数据类型,程序会有不同的处理方式)。在R语言中,基本数据类型包括:数字型、整数型、逻辑型、字符型、复数型、原生型(数据以二进制形式存储和显示,无需了解)。我们可以将这六种基本类型分为三大类:数值(数字型、整数型、复数型)、逻辑型、文本型(字符型)。

1、数字型

数字型(在其他编程语言中也称为数值类型)就是具体的数字,默认取7位有效数字。R语言中,数字型既可以用一般方法表示,例如:256.789,也可以用10的幂表示,例如:12E7, 6.89e-2(分别表示:12×10712\times 10^712×107和6.98×10−26.98 \times 10^{-2}6.98×10−2)。

2、整数型

对于整数型,其值是整数,需在整数后加L表示,例如:-1L, 67L等。

3、逻辑型

逻辑型(在其他编程语言中也称为布尔类型),其值只有两类,即:TRUE和FALSE。对于逻辑型,既可以直接赋值,也可以通过逻辑表达式来获得。

4、字符型

字符型,即字符串。在R中,字符串需要用单引号或双引号包围表示,例如:‘Hello World!’、“hello world!”。引号中的部分可以是任何内容,单引号和双引号之间可以互相包围,但单引号内不能含有单引号,双引号内不能含有双引号。如下:

字符串表示 是否正确
“Hello”、‘world’、“‘hello world’”、‘“World”’ 正确
““hello”” 错误,双引号内不能包含双引号
’asdgh’、”asdgh“ 错误,字符串必须用英文引号包围
“asdgh“sadas“asdas” 正确,引号内可以包含中文引号
"asdasd’ 错误,左侧是双引号,右侧是单引号,不匹配
5、复数类型

R语言中支持复数类型和复数类型,复数包含实部和虚部,虚部用i表示,例如:1+5i, -9-6i等。

6、特殊的数据类型
表示方法 含义
InF 正无穷
-Inf 负无穷
NaN 不可能的值,通常是由于除以0才出现
NULL 空值,代表的就是数据不存在
NA 缺失,代表这里没有一个值,但位置存在,类似于占位符placeholder
三、变量的声明与赋值

在任何语言中,变量都需要先声明再使用。不过由于R语言中,变量没有固定的类型, 给已有变量赋值为新的类型, 该变量就变成新的类型。所以R语言直接通过赋值语句来声明并初始化一个变量。在R语言中,赋值通过以下符号来实现:->->>=<-<<-。前两个符号的含义是把左边的值赋给右边,后三个符号的含义是把右边赋值给左边。

例如,下面这段代码的输出结果就是123:

a = 'hello' # 声明一个变量a,并初始化为字符串'hello',此时a的值是'hello'
a = 123 # 将数值123赋值给a,此时a的值是123
a -> b # 把a赋值给b,此时b的值是123
c <- b # 把b赋值给c,此时c的值是123
print(c) # 在控制台中打印c的值

四、代码注释

注释是对代码的解释,R语言只支持单行注释,用#表示,当前行从#开始一直到末尾,所有内容都会被忽略。

通常在编写一段代码后,我们都需要写注释,来说明这段代码的功能。

如果要用多行注释,每一行都用#开头即可,例如:

# 这是我的第一个R语言程序
# 祝每个看到这段代码的人都能好运
test_string = 'Hello World!' # 声明一个变量test_string,并初始化为'Hello World!'
print(test_string) # 在控制台打印test_string,结果为'Hello World!'
# 这段代码结束了。Good luck!
五、常见运算符

R语言中包含四种运算符:算术运算符、关系运算符、逻辑运算符、赋值运算符。优先级依次为:算术运算符>关系运算符>逻辑运算符>赋值运算符,优先级越高,越先运算,括号优先级最高。

1、算术运算符
符号 含义
+ 两数相加
- 两数相减
/ 两数相除
* 两数相乘
^ 乘方运算
%% 整除求余
%/% 整除(忽略小数部分)

算术运算符优先级最高,最先运算,其运算结果为数值。程序例子如下:

a = 10 # 定义一个变量a,并初始化为10
b = 3 # 定义一个变量b,并初始化为3
print(a/b) # 打印a/b的结果,结果为3.333333,共7位有效数字
print(a*b) # 打印a*b的结果,结果为30
print(a*b) # 打印a*b的结果,结果为30
print(a+b) # 打印a+b的结果,结果为13
print(a-b) # 打印a-b的结果,结果为7
print(a^b) # 打印a^b的结果,结果为1000
print(a%%b) # 打印a%%b的结果,结果为1
print(a%/%b) # 打印a%/%b的结果,结果为3

2、关系运算符
符号 含义
> 判断左边是否大于右边
< 判断左边是否小于右边
== 判断左右两边是否相等
!= 判断左右两边是否不等
>= 判断左边是否大于等于右边
<= 判断左边是否小于等于右边

关系运算符(对于向量而言,是逐元素比较;对于标量而言,直接比较值的大小。有关向量的内容,后面教程会涉及),其运算结果为逻辑值。程序例子如下:

a = 10 # 定义一个变量a,并初始化为10
b = 3 # 定义一个变量b,并初始化为3
print(a>b) # 打印a/b的结果,结果为TRUE
print(a<b) # 打印a*b的结果,结果为FALSE
print(a==b) # 打印a==b的结果,结果为FALSE
print(a!=b) # 打印a+b的结果,结果为TRUE
print(a>=b) # 打印a>=b的结果,结果为TRUE
print(a<=b) # 打印a^b的结果,结果为FALSE

3、逻辑运算符
符号 含义
& 元素逻辑与运算符,针对左右两边逐元素进行与操作(类似高中数学的且)
| 元素逻辑或运算符,针对左右两边逐元素进行或操作(类似高中数学的或)
! 逻辑非运算符,逐元素进行取反操作(类似高中数学的非)
&& 逻辑与运算符,针对左右两边的第一个元素进行与操作
|| 逻辑或运算符,针对左右两边的第一个元素进行或操作

逻辑运算符(在对于标量进行运算时,&&&|||没有任何区别;在对于向量进行运算时,&|是逐元素进行运算,&&||是只针对向量的第一个元素进行运算),其运算结果为逻辑值。程序例子如下:

a = TRUE # 定义一个变量a,并初始化为TRUE
b = FALSE # 定义一个变量b,并初始化为FALSE
print(a&b) # 打印a&b的结果,结果为FALSE
print(a|b) # 打印a|b的结果,结果为TRUE
print(!a) # 打印!a的结果,结果为FALSE
print(!b) # 打印!b的结果,结果为TRUE
print(a&&b) # 打印a&&b的结果,结果为FALSE
print(a||b) # 打印a||b的结果,结果为TRUE

另外,在R语言中,非零的值进行逻辑运算时会被当做TRUE,零在进行逻辑运算时会被当做FALSE。所以上述代码初始化a和b也可以用如下语句:

a = 1 # 定义一个变量a,并初始化为1,在进行逻辑运算时,会被当做TRUE来处理
b = 0 # 定义一个变量b,并初始化为0,在进行逻辑运算时,会被当做FALSE来处理
print(a&b) # 打印a&b的结果,结果为FALSE
print(a|b) # 打印a|b的结果,结果为TRUE
print(!a) # 打印!a的结果,结果为FALSE
print(!b) # 打印!b的结果,结果为TRUE
print(a&&b) # 打印a&&b的结果,结果为FALSE
print(a||b) # 打印a||b的结果,结果为TRUE

4、赋值运算符
符号 含义
<-, <<-, = 右边赋值给左边
->, ->> 左边赋值给右边

赋值运算符优先级最低,最后运算,运算结果为改变变量的值。程序例子如下:

a = 'hello' # 声明一个变量a,并初始化为字符串'hello',此时a的值是'hello'
print(a) # 在控制台中打印a的值,结果为'hello'
a = 123 # 将数值123赋值给a,此时a的值是123
print(a) # 在控制台中打印a的值,结果为123
a -> b # 把a赋值给b,此时b的值是123
print(b) # 在控制台中打印b的值,结果为123
c <- b+1 # 把b+1的结果赋值给c,此时c的值是124
print(c) # 在控制台中打印c的值,结果为124

5、针对复数的有关运算

对于一个复数z,我们可以用R语言自带的函数来求z相关的值。例如,用Re(z)z的实部, 用Im(z)求z的虚部, 用Mod(z)abs(z)求z的模, 用Arg(z)求z的辐角, 用Conj(z)求z的共轭。程序例子如下:

z = 5 + 3i # 声明一个变量,并初始化为复数5+3i
print(Re(z)) # 打印z的实部,结果为5
print(Im(z)) # 打印z的实部,结果为3
print(Mod(z)) # 打印z的模,结果为5.830952,共七位有效数字
print(abs(z)) # 打印z的模,结果为5.830952,共七位有效数字
print(Arg(z)) # 打印z的幅角,结果为0.5404195,共七位有效数字
print(Conj(z)) # 打印z的共轭,结果为5-3i

R语言七天入门教程二:认识变量与运算符相关推荐

  1. R语言七天入门教程六:文件相关操作

    R语言七天入门教程六:文件相关操作 一.文件的读写 R 语言作为统计学编程语言,常常需要处理大量数据,而这些数据通常会从文件中进行读取,因此文件读写在R语言中是非常重要的操作.在R语言中,用到最多的文 ...

  2. R语言七天入门教程三:学习基本结构

    R语言七天入门教程三:学习基本结构 一.编程的语言的基本结构 1.三种基本结构 绝大多数编程语言,都有三种最基本的程序结构:顺序结构.分支结构.循环结构.这三种结构的流程图如下所示(从左至右依次为:顺 ...

  3. R语言七天入门教程五:认识并使用函数

    R语言七天入门教程五:认识并使用函数 一.什么是函数 在编程语言中,如果有一段代码需要在多次重复使用,除了复制粘贴外,还可以将其写成一个函数.函数可以很方便地实现代码复用,对于复杂的程序功能,可以将其 ...

  4. R语言七天入门教程一:配置运行环境

    R语言七天入门教程一:配置运行环境 一.R语言介绍 1.R语言是什么? 参考:R语言教程-R语言介绍 R 语言是为数学研究工作者设计的一种数学编程语言,主要用于统计分析.绘图.数据挖掘.R语言有丰富的 ...

  5. (生物信息学)R语言与统计学入门(二)——单因素方差分析

    上次说到t检验,是检验两组数据的均数差异,链接如下: (生物信息学)R语言与统计学入门(一)--t 检验_李京弦的博客-CSDN博客 这次我们来介绍一下单因素方差分析. 单因素方差分析: 方差分析(A ...

  6. R语言 零基础入门教程第11章 Rattle可视化数据挖掘工具(1)Rattle简介及安装 功能预览 数据导入 数据探索 数据建模 模型评估 Rattle实例

    关注公众号凡花花的小窝,收获更多的考研计算机专业编程相关的资料 本章内容 Rattle简介及安装 功能预览 数据导入 数据探索 数据建模 模型评估 Rattle实例 本章目标 了解Rattle的安装及 ...

  7. c语言类似于 n的标识符,C语言快速入门教程(二)

    C语言快速入门教程(二) C语言的基本语法 本节学习路线图: 引言: C语言,顾名思义就是一门语言,可以类比一下英语; 你要说出一个英语的句子需要: 单词 + 语法! 将单词按照一定的语法拼凑起来就成 ...

  8. (生物信息学)R语言与统计学入门(七)—— 一元线性回归分析

    我们之前讲过相关性分析,生物信息学常见的相关性分析是pearson相关和spearman相关. (生物信息学)R语言与统计学入门(六)-- Pearson和Spearman相关性分析_Lijingxi ...

  9. 大数据分析R语言tidyverse数据清洗工具教程

    凌乱的数据集无处不在.如果要分析数据,不可避免地需要清理数据.在大数据分析R语言tidyverse数据清洗工具教程中,我们将研究如何使用R和一些漂亮的tidyverse工具来做到这一点. 该tidyv ...

最新文章

  1. Tomcat 1099端口占用重启无效,查不到进程,改换端口无效解决方案
  2. 小规模网络数据公开数据_大规模的在线公开课程曾经是100%免费的。 但是他们没有那样做。...
  3. Python自动化办公系列之Python操作PDF
  4. 数据结构与算法--二叉查找树转顺序排列双向链表
  5. html 链接section,HTML section 标签
  6. 50 FI配置-财务会计-固定资产-与总账集成-定义集成资产购置的技术清算科目
  7. 如何修复 WordPress 中的 HTTP 错误
  8. 一张图诠释Git所有命令
  9. 使用Java代码发送邮件
  10. 理光打印机服务器响应错误,理光网络打印机服务器设置
  11. 虚拟化服务器杀毒软件,虚拟机需要安装杀毒软件吗
  12. nginx跨域配置、使用,docker部署nginx全流程(实测简单完整无坑)
  13. wsimport命令介绍
  14. Word文档的使用技巧
  15. 微信备份时提示不在同一个网络
  16. 万历名士袁宏道的自在人生——独抒性灵,不拘格套
  17. [shell] find 指令的使用 (如:找到大于10M的文件)
  18. Python爬虫学习笔记
  19. 【观察】联想“内生外化”:能干肯干、真招实招加速中小企业数字化转型
  20. 二十、哈希表的基础知识

热门文章

  1. 再聊聊Python中文社区的翻译
  2. 和合共生,聚势谋远——云创大数据教育渠道大会隆重举行!
  3. html5页面 学生作品,最完整长页面H5制作教程来啦!
  4. SysML实例——盖浇饭
  5. 安卓 11 文件储存
  6. Win10设置虚拟机桥接连接
  7. 07年7月仲夏在红瓦绿树下的青岛散心~
  8. 泊松融合进阶——DFT求解二维泊松方程
  9. 二维泊松方程数值解-五点差分法-共轭梯度法-python实现
  10. 工程伦理(2021春)第四章课后习题答案