亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > R > 正文

R語言中向量的使用

2023-05-01 13:45:48
字體:
來源:轉載
供稿:網友

在《R語言的數據對象》一文中提到,R語言的數據對象從結構角度劃分,可以分為向量、數組、矩陣、因子、列表和數據框6種。本文首先探討一下R語言中向量的使用方法。

在R語言中,向量(Vector)是相同基本類型元素組成的序列,相當于一維數組。

向量的元素可以是數值型、字符型、邏輯值型和復數型,對應分別稱為數值型向量、字符串型向量、邏輯型向量和復數型向量。

向量中可以包含一個元素,也可以包含多個元素。

同一個向量中的數據類型應該相同。

1、向量的創建

(1)直接創建

x1<-1:10  #輸出:[1] 1 2 3 4 5 6 7 8 9 10

x2<-4.3  #只包含一個值的向量

x3<-TRUE #邏輯型向量,注意在R中,TRUE和FALSE必須大寫

x4 <- "I Love China"   #字符串型向量

在R語言中,<-表示賦值,即右側的值賦給左側的變量。在R語言中,->的寫法也是正確的,即把左側的賦給右側的變量。但等號=不是R語言的標準語法,在有些情況下可能會出現問題,不建議使用。

在R語言中#是注釋符,即#后面的內容是注釋的內容,是對該行內容的一個解釋。

本部分在Windows R3.4.1中的執行情況見下圖:

R語言中向量的創建

(2)使用c()函數創建

使用c()函數可以創建多個值的向量

v1 <- c(1,3,4,9,10)   #輸出1 3 4 9 10

v1 <- c(1:10)   #創建1到10的向量  輸出:1 2 3 4 5 6 7 8 9 10

v2<- c("Male","Female", "Female", "Male")   #字符串型向量

v3<- c(TRUE,FALSE,FALSE,TRUE)   #邏輯型向量

v4 <- c() #一個不包含任何值的向量 輸出NULL

在R語言中,c()函數可以有任意多個參數。

本部分的執行情況見下圖:

R語言中使用c()函數創建向量

(3)使用seq函數生成等差序列的向量

seq函數的原型如下:

seq(from=1,to=1,by=((to-from)/(length.out - 1)),length.out = NULL,along.with = NULL,...)

其中,from是首項,默認為1;to是末項,默認為1;by是步長或等差增量,可以為負數;length.out是向量的長度;along.with:用于指明該向量與另外一個向量的長度相同,along.with后應為另外一個向量的名字。

s1 <- seq(1,10,2)  #向量從1開始,步長為2,最大不超過10,這里輸出:1 3 5 7 9

s2 <- seq(1,9,length.out = 5)  # 輸出1 3 5 7 9,這里的步長是根據(9 - 1)/(5-1)計算出來的

s3 <- seq(3,by=3,length.out=5)  #輸出3 6 9  12 15

s4 <- seq(by=3,along.with = s3)  #輸出1 4 7 10 13,未指定from項時,默認從1開始,長度與向量s3相同

s5 <- seq(length.out = 3)  #輸出1 2 3

s6 <- seq(along.with = s5)  #輸出 1 2 3

s7 <- seq(9,by=-2,length.out=6)  # 9 7 5 3 1 -1

進一步說明:這里的from, to,by項可以為任意實數,即也可以為浮點數。

本部分的執行情況見下圖:

R語言中使用seq()函數創建等差序列

(4)使用rep函數創建重復序列的向量

rep函數可以將某一向量重復若干次,該函數的原型如下:

rep(x , times = 1, length.out = NA,  each = 1)

參數中,x為要重復的序列對象;times為重復的次數,默認為1;length.out為產生的向量長度,默認為NA(未限制);each為每個元素重復的次數,默認為1。

r1 <- rep(1:3,2)  #輸出: 1 2 3 1 2 3   前面的序列按原順序重復2次

r2 <- rep(1:3, each =2)  # 輸出 1 1 2 2 3 3 序列中的每個元素重復2次

r3 <- rep(c(2,5),c(3,4)) #輸出2 2 2 5 5 5 5 5將向量c(2, 5)按照后面給出的次數向量依次重復3次和4次

r4 <- rep(c(2,4,6),each=2 ,length.out = 5) #輸出2 2 4 4 6  由于規定長度為5,這里僅有5項

r5 <- rep(c(2,4,6),each=2,times=3)  #輸出2 2 4 4 6 6 2 2 4 4 6 6 2 2 4 4 6 6 每項2次,整體3次

r6 <- rep(c(2,4,6),times=3,length.out=5) #輸出2 4 6 2 4 整體應該重復3次,但這里規定了長度,所以只有5項

本部分的執行情況見下圖:

R語言中使用rep函數創建重復序列

2、為向量的每個元素命名

vn <- c(11,22,33,44)

names(vn) <- c("one","two","three","four")  #對應元素的名字分別為one, two, three, four

本部分的執行情況見下圖:

R語言中給向量元素命名

3、向量的引用

vc <- c(11,22,33,44,55,66)   #創建一個向量

(1)使用元素的位置引用

① vc[1]  #提取第一個元素值:11

② vc[1:3] #提取1~3個元素的值:11 22 33

③ vc[c(2,4,5)]  #提取第2、第4和第5個元素的值:22 44 55

④ vc[-1] #提取除第一個元素之外的元素值:22 33 44 55 66

⑤ vc[-(1:3)] #提取除1~3個元素之外的元素值:44 55 66

⑥ vc[-c(2,4,5)] #提取除第2、第4和第5個之外的元素值:11 33 66

(2)使用邏輯向量

⑦ vc[c(TRUE,TRUE,FALSE,FALSE,TRUE,FALSE)] #提取對應位置為TRUE的元素值:11 22 55

⑧ vc[c(TRUE,FALSE)] #輸出11 33 55 這里的c(TRUE,FALSE)自動補齊到與vc向量長度相同,c(TRUE,FALSE,TRUE,FALSE,TRUE,FALSE)

⑨ vc[c(TRUE,TRUE,FALSE)] #輸出11 22 44 55

(3)使用元素名字

names(vc) <- c("one","two","three","four","five","six")  #為每個元素命名為one,two,three,four,five,six

⑩ vc["one"] #輸出11(在此值上方會有其名字one)  這種方法只能用于訪問一個元素的情況

?vc[c("one","three","six")] #輸出11 33 66 (其上方會帶有其對應的名字)

(4)使用which函數進行篩選

?which(vc==11) # 找出向量vc中元素值為11的元素位置:這里輸出1,即11在vc中的位置為1

?which(vc==11|vc==33)) #找出向量vc中元素值為11或33的元素所在位置:1 3

?which(vc>11 & vc<=44)#找出元素值大于11且小于44的元素所在位置:2 3 4

?which.max(vc) #最大元素值所在的位置:6

?which.min(vc) #最小元素所在的位置:1

(5)使用subset函數索引

可以使用subset函數找出向量中滿足給定條件的向量元素值,語法格式如下:

subset(向量名,邏輯條件)

?subset(vc,vc>11 & vc<55)  #得到 22 33 44

?subset(vc,c(TRUE,FALSE,TRUE))  #11 33 44 66  邏輯向量通過重復自動補齊

(6)match函數

該函數的原型為:

match(x,y)  

該函數返回的是x中的每個元素在y中對應的位置,如果x中的元素在y中不存在,則該位置返回NA

?match(vc,c(11,22))  # 1 2 NA NA NA NA  因為x中的33 44 55 66在c(11,22)中不存在,所以后面4個為NA

?match(vc,c(11,33,55,66,88,99)) # 1 NA 2 NA 3 4  vc中的22在給定的序列中不存在所以第2個為NA,33在給定的序列位置為2,所以vc中的第3個元素位置為2...

4、向量的編輯

(1)擴展向量

vc<-c(11,22,33,44)  #創建一個向量

vc <-c(vc,c(55,66))  #給vc擴展,增加了2個元素55和66

vc <- append(vc,77)  #在向量最后追加一個新元素77

vc <- append(vc,c(88,99))  #在向量后追加連個元素88和99

vc<- append(vc,100,3)  #在第3個元素后追加一個新元素100 :11 22 33 100 44 55 66 77 88 99

說明,使用append追加元素會生成一個新的向量,不是直接在原向量中追加,看下面的例子:

vc<- c(11,22,33)

append(vc,c(44,55))

若重新輸出vc,會發現vc的向量值元素仍然為:11 22 33,并沒有發生變化

只有這樣vc <- append(vc,c(44,55)),重新打印vc的值為:11 22 33 44 55

(2)改變元素的值

vc[1] <- 111  #向量vc的第一個元素值變為111

vc[1:3] <- 111  #向量vc中第1~第3個元素的值都變為111

vc[1:3] <- c(111,222,333) #向量vc中第1~第3個元素的值分別被修改為111 222 333

vc[vc>33] <- 11  #將向量vc中的所有元素值大于33的元素值修改為11

vc[vc==33] <- 11 #將向量vc中元素值為33的元素值修改為11

(3)刪除元素

vc<-vc[-1]  #從vc中刪除了位置為1的元素

vc<-vc[-c(3:5)] #從vc中刪除了位置為3,4,5的元素

vc<-vc[c(2:4)] #刪除了出位置為2,3,4之外的元素

5、向量的排序

(1)sort函數

sort函數原型如下:

sort(x, decreasing=FALSE,na.last = NA,index.return = FALSE,...)

x為要排序的對象,decreasing為排序順序,是否為降序,默認為FALSE,即升序;na.last是對NA(mising value 或者Not available)值的處理,若為TRUE,則NA值將放在最后,若為FALSE,NA值將放在最前面,若為NA,則排序時剔除掉NA值;index.return是個邏輯值,設置是否顯示排序序列對應的元素值在未排序前序列中的對應位置索引,默認為FALSE。

sort可以使用的的形式如下:

sort(vc)  #默認升序排序,NA值不參與排序,且被剔除掉,即若vc中有NA值的話,排序后的序列中不含有NA值

sort(vc,decreasing = TRUE)  #降序排序,NA值默認被剔除掉

sort(vc,na.last = TRUE) #默認升序排序,NA值不被剔除掉,且放在排序序列的后面

注意:排序生成新的序列,不會影響原向量的值及順序

(2)rev函數

rev函數將向量倒序,即將原向量的元素按位置翻轉

vc <- c(11,44,33,22,77,66)  #創建一個向量

rev(vc)   #66  77 22 33 44 11

6、用于向量的一些函數

(1)求和函數sum()

v <- c(1:10)  #創建一個新向量:1 2 3 4 5 6 7 8 9 10

  sum(vc)  #  55

(2)求最大值函數max()

   max(v)  # 10

(3)求最小值函數min()

   min(v)   # 1

(4)求均值函數mean()

  mean(v)  # 5.5

(5)求中位數函數median()

  median(v)  # 5.5

  v1<- c(1:9)  # 創建一個新向量:1 2 3 4 5 6 7 8 9

  median(v1)  # 5

(6)range()函數

  相當于c(min(x), max(x))

  range(v)  # 1 10

  range(v1) #1 9

(7)求方差函數var()

  var(v)  #9.166667

  var(v1) # 7.5

(8)求標準差函數 sd()

  sd(v)  #3.02765

  sd(v1) #2.738613

(9)求向量元素值連乘積prod()

  prod(v)  #3628800

  prod(v1) #362880

(10)累加和向量函數cumsum(x)

 結果是一個向量,長度與x相同,每一項的值是該項與前一項累加后的值

cumsum(v1)   #1  3  6 10 15 21 28 36 45

cumsum(v)   #1  3  6 10 15 21 28 36 45 55

(完)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩成人在线视频网站| 亚洲japanese制服美女| 欧美午夜激情小视频| 黄色91在线观看| 日韩在线观看高清| 91系列在线观看| 性色av香蕉一区二区| 国产69久久精品成人| 欧美性猛交丰臀xxxxx网站| 日韩免费在线免费观看| 国产精品91视频| 久久久国产在线视频| 欧美国产日韩精品| 中文字幕v亚洲ⅴv天堂| 97精品久久久中文字幕免费| 久久久精品久久久| 国产精品尤物福利片在线观看| 国产视频亚洲精品| 国产亚洲a∨片在线观看| 亚洲福利视频网| 日韩精品中文字幕在线播放| 久久中文字幕国产| 欧美一区二区三区免费视| 91精品免费久久久久久久久| 亚洲精品av在线| 91探花福利精品国产自产在线| 欧美剧在线观看| 日韩精品在线播放| 亚洲欧美日韩一区在线| 性欧美xxxx视频在线观看| 中文一区二区视频| 国产美女扒开尿口久久久| 97视频人免费观看| 亚洲成人精品视频在线观看| 91亚洲永久免费精品| 97在线观看视频| 国产高清在线不卡| 91色琪琪电影亚洲精品久久| 亚洲欧美激情精品一区二区| 欧美激情视频网站| 亚洲国产精品悠悠久久琪琪| 久久亚洲私人国产精品va| 美女视频黄免费的亚洲男人天堂| 亚洲第一av在线| 欧美黄色三级网站| 最新中文字幕亚洲| 97视频在线观看视频免费视频| 精品视频在线播放免| 欧美日本高清一区| 久热精品视频在线免费观看| 高跟丝袜欧美一区| 亚洲国产精品免费| 国产精品久久视频| 国产精品久久一| 亚洲国产精品久久| 亚洲男人天堂网| 国产精品亚洲自拍| 成人久久久久爱| 久久久99免费视频| 久久精品视频导航| 国产精品成人v| 国产精品美女主播在线观看纯欲| 操日韩av在线电影| 国产在线日韩在线| 91精品视频观看| 日韩欧美成人免费视频| 亚洲国产精品专区久久| 午夜精品久久久久久久99黑人| 亚洲美腿欧美激情另类| 国产精品成人va在线观看| 欧美日韩午夜剧场| 中文字幕在线日韩| 国产精品色视频| 日韩电影中文字幕| 国产精品美女www爽爽爽视频| 久久国产精品99国产精| 亚洲福利小视频| 国产精品香蕉国产| 欧美在线视频在线播放完整版免费观看| 久久久久久久影视| 久久国产精品免费视频| 国产成人aa精品一区在线播放| 久久久久久久久久婷婷| 插插插亚洲综合网| 精品国产欧美一区二区五十路| 久久精品国产亚洲精品| 8x拔播拔播x8国产精品| 国产亚洲欧洲高清| 91人人爽人人爽人人精88v| 亚洲国产日韩精品在线| 欧美日韩国产va另类| 久久精品国产亚洲7777| 国产日韩中文在线| 欧美日韩午夜激情| 国产精品久久精品| 一个色综合导航| 欧美精品亚州精品| 亚洲性av在线| 热草久综合在线| xxav国产精品美女主播| 久热精品视频在线观看一区| 国内免费精品永久在线视频| 欧美日韩中文字幕在线视频| 久久久久久久久久久亚洲| 欧美视频在线观看免费网址| 亚洲系列中文字幕| 日韩av在线网页| 久久免费少妇高潮久久精品99| 中文字幕亚洲综合久久筱田步美| 91精品国产高清久久久久久| 成人在线免费观看视视频| 55夜色66夜色国产精品视频| 欧美成人精品h版在线观看| 日日狠狠久久偷偷四色综合免费| 午夜欧美不卡精品aaaaa| 日韩精品在线看| 欧美成人精品xxx| 日韩激情在线视频| 91免费福利视频| 国产精品亚洲美女av网站| 成人啪啪免费看| 亚洲在线视频观看| 久久资源免费视频| 国产精品成人免费电影| 国产精品久久久久9999| 黑丝美女久久久| 亚洲国产毛片完整版| www.xxxx精品| 欧美日韩国产精品一区| 国产精品尤物福利片在线观看| 亚洲一区亚洲二区| 亚洲一区二区自拍| 狠狠爱在线视频一区| 一区二区三区视频在线| 欧美又大粗又爽又黄大片视频| 欧美老女人在线视频| 精品亚洲一区二区三区在线播放| 精品二区三区线观看| 一区二区三区回区在观看免费视频| 97热在线精品视频在线观看| 日韩中文字幕第一页| 国产69精品久久久久9| 国产亚洲精品久久久| 亚洲欧美在线免费观看| 色综合男人天堂| 日韩小视频在线| 国产精品成人一区二区三区吃奶| 综合av色偷偷网| 亚洲午夜性刺激影院| 97国产精品久久| 在线播放精品一区二区三区| 欧美一区二粉嫩精品国产一线天| 人人澡人人澡人人看欧美| 亚洲天堂网站在线观看视频| 久久久久久久久网站| 久久久国产精彩视频美女艺术照福利| 97超碰蝌蚪网人人做人人爽| 亚洲成色www8888| 欧美国产乱视频| 亚洲天堂2020| 亚洲日本成人女熟在线观看| 亚洲a级在线观看| 一区二区国产精品视频| 国产精品日日摸夜夜添夜夜av|