R語(yǔ)言中向量的加法和乘法運(yùn)算
在R語(yǔ)言中,不同長(zhǎng)度的向量也是可以相加和相乘的,乘法的規(guī)則和加法類似
1,相同長(zhǎng)度的向量相加
> x<- 1:4 > y<- 1:4 > z<- x+y > z
[1] 2 4 6 8
規(guī)則就是 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
乘法也類似
2,不同長(zhǎng)度的向量相加
> x<- 1:4 > y<- 1:3 > z<-x+y 警告信息: In x + y : 長(zhǎng)的對(duì)象長(zhǎng)度不是短的對(duì)象長(zhǎng)度的整倍數(shù) > z [1] 2 4 6 5 >
注意R返回了一個(gè)警告消息而不是一個(gè)錯(cuò)誤消息, 因此這個(gè)操作實(shí)際上是被執(zhí)行了的。
這一類的規(guī)則就是 x[1]+y[1],x[2]+y[2],x[3]+y[3],x[4]+y[1](因?yàn)閥[3]就結(jié)束了,進(jìn)入了又一次循環(huán))
乘法規(guī)則類似
> x<- 1:4 > y<- 1:3 > z<- x*y 警告信息: In x * y : 長(zhǎng)的對(duì)象長(zhǎng)度不是短的對(duì)象長(zhǎng)度的整倍數(shù) > z [1] 1 4 9 4
另外,所得的向量長(zhǎng)度為最長(zhǎng)的那個(gè)向量的長(zhǎng)度
> x<- 1:4 > y<- 1:3 > z<- 2:3 > w<- x+y+z 警告信息: In x + y : 長(zhǎng)的對(duì)象長(zhǎng)度不是短的對(duì)象長(zhǎng)度的整倍數(shù) > w [1] 4 7 8 8 > v<-x*y*z 警告信息: In x * y : 長(zhǎng)的對(duì)象長(zhǎng)度不是短的對(duì)象長(zhǎng)度的整倍數(shù) > v [1] 2 12 18 12 >
但是這里出了一個(gè)問(wèn)題,
> x<- 1:4 > y<- 1:3 > z<- 2:3 > x+y+z [1] 4 7 8 8 警告信息: In x + y : 長(zhǎng)的對(duì)象長(zhǎng)度不是短的對(duì)象長(zhǎng)度的整倍數(shù) > x+z+y [1] 4 7 8 8 警告信息: In x + z + y : 長(zhǎng)的對(duì)象長(zhǎng)度不是短的對(duì)象長(zhǎng)度的整倍數(shù) > z+x+y [1] 4 7 8 8 警告信息: In z + x + y : 長(zhǎng)的對(duì)象長(zhǎng)度不是短的對(duì)象長(zhǎng)度的整倍數(shù) ><span style="color:#ff0000;"> z+y+x [1] 4 7 8 7</span> 警告信息: 1: In z + y : 長(zhǎng)的對(duì)象長(zhǎng)度不是短的對(duì)象長(zhǎng)度的整倍數(shù) 2: In z + y + x : 長(zhǎng)的對(duì)象長(zhǎng)度不是短的對(duì)象長(zhǎng)度的整倍數(shù) > z*x*y [1] 2 12 18 12 警告信息: In z * x * y : 長(zhǎng)的對(duì)象長(zhǎng)度不是短的對(duì)象長(zhǎng)度的整倍數(shù) > z*y*x [1] 2 12 18 8 警告信息: 1: In z * y : 長(zhǎng)的對(duì)象長(zhǎng)度不是短的對(duì)象長(zhǎng)度的整倍數(shù) 2: In z * y * x : 長(zhǎng)的對(duì)象長(zhǎng)度不是短的對(duì)象長(zhǎng)度的整倍數(shù) >
不知道各位注意到了沒(méi)有,難道我們的方法不對(duì)么
首先,加法和乘法運(yùn)算,在沒(méi)有括號(hào)等其他優(yōu)先級(jí)的情況下是從左至右依次算的
我們來(lái)看一下
> 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
所以說(shuō),不同長(zhǎng)度的向量相加,順序也是很重要的。
補(bǔ)充:R語(yǔ)言向量_常用的向量運(yùn)算
向量運(yùn)算與邏輯運(yùn)算
> 2+3 [1] 5 > "+"(2,3) [1] 5 > x<-c(1,2,4) > x+c(5,0,-1) [1] 6 2 3
這些都比較簡(jiǎn)單,就是簡(jiǎn)單的標(biāo)量運(yùn)算和向量運(yùn)算,只不過(guò)是運(yùn)算符可以放到前面,并且向量的對(duì)應(yīng)元素需要相加罷了。
> 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
對(duì)于這幾步的運(yùn)算需要注意一下幾點(diǎn):*運(yùn)算就是向量對(duì)應(yīng)元素相乘,和線性代數(shù)里面的矩陣相乘并不一樣。/運(yùn)算就是對(duì)應(yīng)元素相除就好。%%運(yùn)算就是對(duì)應(yīng)元素相除取余數(shù)。
向量索引
> y<-c(1.2,3.9,0.4,0.12) > y[c(1,3)] [1] 1.2 0.4 > y[2:3] [1] 3.9 0.4 > v<-3:4 > y[v] [1] 0.40 0.12
這些都比較容易,一看就會(huì),不做詳細(xì)解釋
> x<-c(4,2,17,5) > y<-x[c(1,1,3)] > y [1] 4 4 17
這個(gè)例子是想講元素重復(fù)是允許的
> z<-c(5,12,13) > z[-1] [1] 12 13 > z[-1:-2] [1] 13
帶負(fù)號(hào)的下標(biāo)代表我們想要把相應(yīng)的元素剔除掉。
用:運(yùn)算符創(chuàng)建向量
> 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
:運(yùn)算符實(shí)際上就是為了得到一串等差數(shù)列,比較簡(jiǎn)單,但是要特別講一下的是1:i-1和1:(i-1),這里面實(shí)際上及一個(gè)運(yùn)算符優(yōu)先級(jí)的問(wèn)題,1:i-1是先計(jì)算1:i得到1 2,然后再減1得到0 1,而1:(i-1)是先計(jì)算i-1得到1后然后計(jì)算1:1,最后答案就是1.
使用seq()創(chuàng)建向量
這個(gè)函數(shù)也是用來(lái)生成等差數(shù)列的,具體用法看例子
> seq(from=12,to=30,by=3) [1] 12 15 18 21 24 27 30
這一段代碼表示從12到30生成等差數(shù)列,公差為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
這個(gè)表示從1.1到2生成10個(gè)數(shù)的等差數(shù)列
使用rep()重復(fù)向量常數(shù)
調(diào)用的格式是rep(x,times),表示創(chuàng)建times*length(x)個(gè)元素的向量,這個(gè)向量是有x重復(fù)times此構(gòu)成。
> 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
最后一個(gè)each表示向量中每一個(gè)元素重復(fù)的次數(shù),一個(gè)個(gè)元素重復(fù)的,不再是整個(gè)向量重復(fù)。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
R語(yǔ)言 實(shí)現(xiàn)list類型數(shù)據(jù)轉(zhuǎn)換
這篇文章主要介紹了R語(yǔ)言 實(shí)現(xiàn)list類型數(shù)據(jù)轉(zhuǎn)換,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03R語(yǔ)言數(shù)值取消科學(xué)計(jì)數(shù)法表示的操作
這篇文章主要介紹了R語(yǔ)言數(shù)值取消科學(xué)計(jì)數(shù)法表示的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04R語(yǔ)言ggplot2實(shí)現(xiàn)將多個(gè)照片拼接到一起
本文主要介紹了R語(yǔ)言ggplot2實(shí)現(xiàn)將多個(gè)照片拼接到一起,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07R語(yǔ)言之dplyr包常用函數(shù)方法示例學(xué)習(xí)
這篇文章主要為大家介紹了R語(yǔ)言之dplyr包常用函數(shù)方法示例學(xué)習(xí)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08R語(yǔ)言 實(shí)現(xiàn)將數(shù)據(jù)框中的字符類型數(shù)字轉(zhuǎn)換為數(shù)值
這篇文章主要介紹了R語(yǔ)言 實(shí)現(xiàn)將數(shù)據(jù)框中的字符類型數(shù)字轉(zhuǎn)換為數(shù)值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03R語(yǔ)言與格式,日期格式,格式轉(zhuǎn)化的操作
這篇文章主要介紹了R語(yǔ)言與格式,日期格式,格式轉(zhuǎn)化的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04R繪制漂亮的中國(guó)地圖的實(shí)現(xiàn)示例
本文主要介紹了R繪制漂亮的中國(guó)地圖的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09