R语言运算符
我们重点看一些和传统编程语言不太相同的地方!!
R中乘方运算既可以使用 ^ 也可以使用 **
除法运算与c/c++不太相同 ‘/’在c/c++中若不能整除则会向下取整
但R与python在这点上的设计相同 均采用浮点数计算 下图为R和python的除法运行结果
下面这个例子我们可以看出R中的整除运算也是向下取整
其余运算无特殊情况
注:不对负数取余进行讨论,每个语言对于这部分处理均不太相同,但通常认为余数不应当为负数
在学习关系运算符之前,我们先来了解R中的一个数据结构----向量(vector)
vector在很多编程语言中都是存在的,本质设计思想采用数据结构中的链表
我们先来看一个c++的例子:
我们可以通过这个例子总结一下:
- 向量的长度是可变的(例子是1-10)
- c++中的vector中所有的元素类型必须一致(比如这个例子,所有元素类型均为int)----这点很重要!!!
那么R语言呢?
c函数就相当于创建一个向量(vector)
我们发现这个例子我们并没有规定长度,想创建多少元素都可以创建多少元素,这点与c++是一样的
那么c函数是否允许不同类型?
很不幸,虽然没有报错,但把1,2变成了字符“1”,“2”
显然这不是我们预期的结果
所以 R中的向量和c++的设计思想基本是一致的 也就上长度可变,且元素值类型必须相同
接下来我们就可以看例子了
其实例子理解起来没什么难度,两个向量每个元素对应比较就可以了,满足条件即为True,不满足条件即为False
但其实这个例子蕴含着R语言的设计思想
R确实是对于编程基础弱的程序员非常友好,因为这种判断行为在传统编程语言中是绝对不允许的
一个问题解释上面这句话----为什么要对应相比?不能交叉相比较吗?反正你也没指定比较规则QAQ
其他运算符
贴上菜鸟教程的图
但我们要解释一下矩阵(matrix)的乘法运算
e.g.
通过这个例子我们发现 * 和 %% 并不太一样
前者表示对应位置相乘,后者是线性代数中的矩阵乘法规则
那么矩阵如果不符合规定怎么办?比如33如何使用 * 与一个3*4的矩阵相乘?
答案是:会报错,因为这不符合运算规则
第二种运算显然满足,学过线性代数就懂了~~~
数学函数了解一下就可以了 不懂可以查表