时间:2021-05-20
在R语言中,不同长度的向量也是可以相加和相乘的,乘法的规则和加法类似
规则就是 x[1]+y[1],x[2]+y[2],x[3]+y[3],x[4]+y[4]
> x<- 1:4> y<- 1:4> z<- x*y> z[1] 1 4 9 16乘法也类似
注意R返回了一个警告消息而不是一个错误消息, 因此这个操作实际上是被执行了的。
这一类的规则就是 x[1]+y[1],x[2]+y[2],x[3]+y[3],x[4]+y[1](因为y[3]就结束了,进入了又一次循环)
乘法规则类似
> x<- 1:4> y<- 1:3> z<- x*y警告信息:In x * y : 长的对象长度不是短的对象长度的整倍数> z[1] 1 4 9 4另外,所得的向量长度为最长的那个向量的长度
> x<- 1:4> y<- 1:3> z<- 2:3> w<- x+y+z警告信息:In x + y : 长的对象长度不是短的对象长度的整倍数> w[1] 4 7 8 8> v<-x*y*z警告信息:In x * y : 长的对象长度不是短的对象长度的整倍数> v[1] 2 12 18 12>但是这里出了一个问题,
> x<- 1:4> y<- 1:3> z<- 2:3> x+y+z[1] 4 7 8 8警告信息:In x + y : 长的对象长度不是短的对象长度的整倍数> x+z+y[1] 4 7 8 8警告信息:In x + z + y : 长的对象长度不是短的对象长度的整倍数> z+x+y[1] 4 7 8 8警告信息:In z + x + y : 长的对象长度不是短的对象长度的整倍数><span style="color:#ff0000;"> z+y+x[1] 4 7 8 7</span>警告信息:1: In z + y : 长的对象长度不是短的对象长度的整倍数2: In z + y + x : 长的对象长度不是短的对象长度的整倍数> z*x*y[1] 2 12 18 12警告信息:In z * x * y : 长的对象长度不是短的对象长度的整倍数> z*y*x[1] 2 12 18 8警告信息:1: In z * y : 长的对象长度不是短的对象长度的整倍数2: In z * y * x : 长的对象长度不是短的对象长度的整倍数>不知道各位注意到了没有,难道我们的方法不对么
首先,加法和乘法运算,在没有括号等其他优先级的情况下是从左至右依次算的
我们来看一下
> x<- c(1,2,3,4)> y<- c(1,2,3)> z<- c(2,3)> x+y[1] 2 4 6 5> x+y+z[1] 4 7 8 8> z+y[1] 3 5 5> z+y+x[1] 4 7 8 7所以说,不同长度的向量相加,顺序也是很重要的。
补充:R语言向量_常用的向量运算
这些都比较简单,就是简单的标量运算和向量运算,只不过是运算符可以放到前面,并且向量的对应元素需要相加罢了。
> x<-c(1,2,4)> x*c(5,0,-1)[1] 5 0 -4> x<-c(1,2,4)> x/c(5,4,-1)[1] 0.2 0.5 -4.0> x%%c(5,4,-1)[1] 1 2 0对于这几步的运算需要注意一下几点:*运算就是向量对应元素相乘,和线性代数里面的矩阵相乘并不一样。/运算就是对应元素相除就好。%%运算就是对应元素相除取余数。
这些都比较容易,一看就会,不做详细解释
> x<-c(4,2,17,5)> y<-x[c(1,1,3)]> y[1] 4 4 17这个例子是想讲元素重复是允许的
> z<-c(5,12,13)> z[-1][1] 12 13> z[-1:-2][1] 13带负号的下标代表我们想要把相应的元素剔除掉。
用:运算符创建向量
> 5:8[1] 5 6 7 8> 5:1[1] 5 4 3 2 1> i<-2> 1:i-1[1] 0 1> 1:(i-1)[1] 1:运算符实际上就是为了得到一串等差数列,比较简单,但是要特别讲一下的是1:i-1和1:(i-1),这里面实际上及一个运算符优先级的问题,1:i-1是先计算1:i得到1 2,然后再减1得到0 1,而1:(i-1)是先计算i-1得到1后然后计算1:1,最后答案就是1.
这个函数也是用来生成等差数列的,具体用法看例子
> seq(from=12,to=30,by=3)[1] 12 15 18 21 24 27 30这一段代码表示从12到30生成等差数列,公差为3
> seq(from=1.1,to=2,length=10) [1] 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0这个表示从1.1到2生成10个数的等差数列
调用的格式是rep(x,times),表示创建times*length(x)个元素的向量,这个向量是有x重复times此构成。
> x<-rep(8,4)> x[1] 8 8 8 8> rep(c(5,12,13),3)[1] 5 12 13 5 12 13 5 12 13> rep(1:3,2)[1] 1 2 3 1 2 3> rep(c(5,12,13),each=2)[1] 5 5 12 12 13 13最后一个each表示向量中每一个元素重复的次数,一个个元素重复的,不再是整个向量重复。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C语言也可以进行加减乘除运算,但是运算符号与数学中的略有不同,见下表。加法减法乘法除法求余数数学+-×÷无C语言+-*/%加号、减号与
以上数据类型均为原子向量。单引号和双引号不做区分。R语言中TRUE和FALSE可以简化为T和F多元素向量的生成方式方式1:使用c()函数,这个是最常见的c(co
矩阵向量vector用于描述一维数据,是R语言中最基础的数据结构形式矩阵matrix可以描述二维数据,和向量相似,其内部元素可以是实数、复数、字符、逻辑型数据矩
变量为我们提供了我们的程序可以操作的命名存储。R语言中的变量可以存储原子向量,原子向量组或许多Robject的组合。有效的变量名称由字母,数字和点或下划线字符组
算术运算符运算符名称结果$a+$b加法$a和$b的和$a-$b减法$a和$b的差$a*$b乘法$a和$b的积$a/$b除法$a除以$b的商$a%$b取模$a除以