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

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 × 1 0 7 12\times 10^7 12×107 6.98 × 1 0 − 2 6.98 \times 10^{-2} 6.98×102)。

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

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值