麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > R > 正文

R語言中向量的使用

2023-05-01 13:45:48
字體:
供稿:網(wǎng)友

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

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

向量的元素可以是數(shù)值型、字符型、邏輯值型和復(fù)數(shù)型,對(duì)應(yīng)分別稱為數(shù)值型向量、字符串型向量、邏輯型向量和復(fù)數(shù)型向量。

向量中可以包含一個(gè)元素,也可以包含多個(gè)元素。

同一個(gè)向量中的數(shù)據(jù)類型應(yīng)該相同。

1、向量的創(chuàng)建

(1)直接創(chuàng)建

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

x2<-4.3  #只包含一個(gè)值的向量

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

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

在R語言中,<-表示賦值,即右側(cè)的值賦給左側(cè)的變量。在R語言中,->的寫法也是正確的,即把左側(cè)的賦給右側(cè)的變量。但等號(hào)=不是R語言的標(biāo)準(zhǔn)語法,在有些情況下可能會(huì)出現(xiàn)問題,不建議使用。

在R語言中#是注釋符,即#后面的內(nèi)容是注釋的內(nèi)容,是對(duì)該行內(nèi)容的一個(gè)解釋。

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

R語言中向量的創(chuàng)建

(2)使用c()函數(shù)創(chuàng)建

使用c()函數(shù)可以創(chuàng)建多個(gè)值的向量

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

v1 <- c(1:10)   #創(chuàng)建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() #一個(gè)不包含任何值的向量 輸出NULL

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

本部分的執(zhí)行情況見下圖:

R語言中使用c()函數(shù)創(chuàng)建向量

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

seq函數(shù)的原型如下:

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

其中,from是首項(xiàng),默認(rèn)為1;to是末項(xiàng),默認(rèn)為1;by是步長或等差增量,可以為負(fù)數(shù);length.out是向量的長度;along.with:用于指明該向量與另外一個(gè)向量的長度相同,along.with后應(yīng)為另外一個(gè)向量的名字。

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,這里的步長是根據(jù)(9 - 1)/(5-1)計(jì)算出來的

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項(xiàng)時(shí),默認(rèn)從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

進(jìn)一步說明:這里的from, to,by項(xiàng)可以為任意實(shí)數(shù),即也可以為浮點(diǎn)數(shù)。

本部分的執(zhí)行情況見下圖:

R語言中使用seq()函數(shù)創(chuàng)建等差序列

(4)使用rep函數(shù)創(chuàng)建重復(fù)序列的向量

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

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

參數(shù)中,x為要重復(fù)的序列對(duì)象;times為重復(fù)的次數(shù),默認(rèn)為1;length.out為產(chǎn)生的向量長度,默認(rèn)為NA(未限制);each為每個(gè)元素重復(fù)的次數(shù),默認(rèn)為1。

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

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

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

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

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 每項(xiàng)2次,整體3次

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

本部分的執(zhí)行情況見下圖:

R語言中使用rep函數(shù)創(chuàng)建重復(fù)序列

2、為向量的每個(gè)元素命名

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

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

本部分的執(zhí)行情況見下圖:

R語言中給向量元素命名

3、向量的引用

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

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

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

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

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

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

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

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

(2)使用邏輯向量

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

⑧ vc[c(TRUE,FALSE)] #輸出11 33 55 這里的c(TRUE,FALSE)自動(dòng)補(bǔ)齊到與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")  #為每個(gè)元素命名為one,two,three,four,five,six

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

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

(4)使用which函數(shù)進(jìn)行篩選

?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函數(shù)索引

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

subset(向量名,邏輯條件)

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

?subset(vc,c(TRUE,FALSE,TRUE))  #11 33 44 66  邏輯向量通過重復(fù)自動(dòng)補(bǔ)齊

(6)match函數(shù)

該函數(shù)的原型為:

match(x,y)  

該函數(shù)返回的是x中的每個(gè)元素在y中對(duì)應(yīng)的位置,如果x中的元素在y中不存在,則該位置返回NA

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

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

4、向量的編輯

(1)擴(kuò)展向量

vc<-c(11,22,33,44)  #創(chuàng)建一個(gè)向量

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

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

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

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

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

vc<- c(11,22,33)

append(vc,c(44,55))

若重新輸出vc,會(huì)發(fā)現(xiàn)vc的向量值元素仍然為:11 22 33,并沒有發(fā)生變化

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

(2)改變?cè)氐闹?/p>

vc[1] <- 111  #向量vc的第一個(gè)元素值變?yōu)?11

vc[1:3] <- 111  #向量vc中第1~第3個(gè)元素的值都變?yōu)?11

vc[1:3] <- c(111,222,333) #向量vc中第1~第3個(gè)元素的值分別被修改為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函數(shù)

sort函數(shù)原型如下:

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

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

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

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

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

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

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

(2)rev函數(shù)

rev函數(shù)將向量倒序,即將原向量的元素按位置翻轉(zhuǎn)

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

rev(vc)   #66  77 22 33 44 11

6、用于向量的一些函數(shù)

(1)求和函數(shù)sum()

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

  sum(vc)  #  55

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

   max(v)  # 10

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

   min(v)   # 1

(4)求均值函數(shù)mean()

  mean(v)  # 5.5

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

  median(v)  # 5.5

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

  median(v1)  # 5

(6)range()函數(shù)

  相當(dāng)于c(min(x), max(x))

  range(v)  # 1 10

  range(v1) #1 9

(7)求方差函數(shù)var()

  var(v)  #9.166667

  var(v1) # 7.5

(8)求標(biāo)準(zhǔn)差函數(shù) sd()

  sd(v)  #3.02765

  sd(v1) #2.738613

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

  prod(v)  #3628800

  prod(v1) #362880

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

 結(jié)果是一個(gè)向量,長度與x相同,每一項(xiàng)的值是該項(xiàng)與前一項(xiàng)累加后的值

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

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

(完)

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 一级尻逼视频 | 国产精品剧情一区二区三区 | 好吊色欧美一区二区三区四区 | 精品一区二区久久久久久按摩 | 久久久久久久免费看 | 在线成人免费视频 | 欧美精品网址 | 国产一区二区视频精品 | 福利在线小视频 | 一级网站 | 色中色在线播放 | 国产黄色免费网站 | 成人免费毛片在线观看 | 日本羞羞影院 | 成人三级电影在线 | 奇米888一区二区三区 | 91成人午夜性a一级毛片 | 激情亚洲一区二区三区 | 亚洲小视频在线 | 87成人免费看片 | 日本中文一级片 | 久久精品一区视频 | 人成免费a级毛片 | 日本在线免费观看视频 | 狠狠操人人干 | 中文在线观看视频 | 久久久久亚洲美女啪啪 | 26uuu成人人网图片 | 狠狠干夜夜草 | 亚洲人成网站免费播放 | 福利在线国产 | 成人在线视频精品 | 精国产品一区二区三区 | 久久精品亚洲欧美日韩精品中文字幕 | 亚洲成人免费影视 | 欧美性激情视频 | 免费看操片 | 国产日产精品久久久久快鸭 | www久久久久久 | 性欧美极品xxxx欧美一区二区 | 成人福利视频在 |