R语言运算符

R语言中两个中括号作用 r语言中两个乘号_R


我们重点看一些和传统编程语言不太相同的地方!!

R中乘方运算既可以使用 ^ 也可以使用 **

R语言中两个中括号作用 r语言中两个乘号_设计思想_02


除法运算与c/c++不太相同 ‘/’在c/c++中若不能整除则会向下取整

但R与python在这点上的设计相同 均采用浮点数计算 下图为R和python的除法运行结果

R语言中两个中括号作用 r语言中两个乘号_R_03


R语言中两个中括号作用 r语言中两个乘号_统计_04


下面这个例子我们可以看出R中的整除运算也是向下取整

R语言中两个中括号作用 r语言中两个乘号_R_05


其余运算无特殊情况

注:不对负数取余进行讨论,每个语言对于这部分处理均不太相同,但通常认为余数不应当为负数

在学习关系运算符之前,我们先来了解R中的一个数据结构----向量(vector)
vector在很多编程语言中都是存在的,本质设计思想采用数据结构中的链表
我们先来看一个c++的例子:

R语言中两个中括号作用 r语言中两个乘号_设计思想_06


我们可以通过这个例子总结一下:

  1. 向量的长度是可变的(例子是1-10)
  2. c++中的vector中所有的元素类型必须一致(比如这个例子,所有元素类型均为int)----这点很重要!!!

那么R语言呢?

c函数就相当于创建一个向量(vector)

R语言中两个中括号作用 r语言中两个乘号_统计_07


我们发现这个例子我们并没有规定长度,想创建多少元素都可以创建多少元素,这点与c++是一样的

那么c函数是否允许不同类型?

R语言中两个中括号作用 r语言中两个乘号_R_08


很不幸,虽然没有报错,但把1,2变成了字符“1”,“2”

显然这不是我们预期的结果

所以 R中的向量和c++的设计思想基本是一致的 也就上长度可变,且元素值类型必须相同

接下来我们就可以看例子了

R语言中两个中括号作用 r语言中两个乘号_R语言中两个中括号作用_09


其实例子理解起来没什么难度,两个向量每个元素对应比较就可以了,满足条件即为True,不满足条件即为False

但其实这个例子蕴含着R语言的设计思想
R确实是对于编程基础弱的程序员非常友好,因为这种判断行为在传统编程语言中是绝对不允许的
一个问题解释上面这句话----为什么要对应相比?不能交叉相比较吗?反正你也没指定比较规则QAQ

其他运算符

贴上菜鸟教程的图

R语言中两个中括号作用 r语言中两个乘号_c++_10

R语言中两个中括号作用 r语言中两个乘号_R语言中两个中括号作用_11


但我们要解释一下矩阵(matrix)的乘法运算

e.g.

R语言中两个中括号作用 r语言中两个乘号_统计_12


通过这个例子我们发现 * 和 %% 并不太一样
前者表示对应位置相乘,后者是线性代数中的矩阵乘法规则
那么矩阵如果不符合规定怎么办?比如3
3如何使用 * 与一个3*4的矩阵相乘?

R语言中两个中括号作用 r语言中两个乘号_c++_13


答案是:会报错,因为这不符合运算规则

R语言中两个中括号作用 r语言中两个乘号_统计_14


第二种运算显然满足,学过线性代数就懂了~~~数学函数了解一下就可以了 不懂可以查表

R语言中两个中括号作用 r语言中两个乘号_R语言中两个中括号作用_15