R語言 資料結構 向量1

2021-10-20 12:28:46 字數 3677 閱讀 7319

向量是r語言的核心,向量的元素必須屬於某種資料型別,在乙個向量中元素必須是同一資料型別。

向量是最基本的資料型別。如果乙個函式作用到向量上,那麼它作用到該向量的每個元素之上。

x

5,by=

0.5)

;###以步長0.5從1至5建立向量(等差數列)

###建立times*length(x)個元素的向量

rep(x,times)

y5,2)

;y ##重複2:5這個序列2次

z5,rep(2,

4));z ###從2至5,每個元素重複兩次,4是元素個數

f5,times=

1,each=2)

;f##重複2:5這個序列一次,每個元素兩次

rep(c(1,

2,3)

,c(5,4

,3))

##重複元素1,5次;重複元素2,四次。

向量是連續儲存的,不能進行插入和刪除處理。向量一經建立,其大小已經確定。如果想要進行新增或刪除元素,則需要重新賦值。

################新增元素##############

x1,to=

100,by=2)

x[51

]101;x

v3v[c(4,

5,6)

]5,6)

;v #####批量賦值

x23]

,168

, x[24:

50])###在第23、24個元素之間插入168

9,after =2)

##在向量v中插入元素9,其位置在2個元素後

9,after =0)

###在向量頭部插入資料

##################刪除元素#############

y1:3)

];y###############修改元素##################

y["five"

]100;yv[2

]15;vv[3

]"five"

;v

x

1,to=

100,by=2)

length(x)

編寫乙個函式來判斷向量x元素中第乙個1所在的索引。

x

4,5,

1,6,

7,1,

2,3,

1)judge

function

(x)}

return(i)

}judge(x)

如果length(x)為0時,上述方法不再有用。

如:空向量x,r會報錯。我們可以用seq()函式來實現。如果x非空,seq()函式與1:length(x)的結果相同

> x

)> judge

function

(x)+

}+ return(i)+}

> judge(x)

null

較短向量會被r自動補充,直到與長向量長度相同。

在r中,矩陣實際上是乙個長向量。是一列一列地儲存的。在儲存上,矩陣y與向量c(1,2,3,4,5,6)相同。圖一的運算相當於圖二的運算。

圖一:

圖二:

r是一種函式式語言,每乙個符號都相當於乙個函式。

x

2,3,

4,5)

y7,8,

9,10)

> x+

1####向量中每個元素都加1[1

]234

56> y %% x ####求餘[1

]012

10> y %/% x ###整除[1

]632

22> x %*% y ###求內積[,

1][1

,]130> x * y ###對應元素相乘[1

]61424

3650

#求內積 x %*% y t(x)%*%y crossprod(x,y)

##求外積 x %o% y outer(x,y) x%*%t(y)

x2,3,

4,5)

y4,6,

8,10)

x%*%y

t(x)

%*%y

crossprod(x,y)

x%o%y

outer(x,y)

x%*%t(y)

###############################向量的索引#######################

x1,to=

100,by=2)

x[i]

##表示向量x的第i個元素

x[c(4:

18)]####向量x的第四個到第18個元素

x[c(1,

23,24,

50)]###向量x的第乙個、第23個、第24個、第50個元素

names(y)

"one"

,"two"

,"three"

,"four"

,"five");y

y["one"

]####訪問向量y中名字為one 的元素

分別返回其引數是否至少乙個為true,全部為true

> x

10> any(x>8)

[1]true

> any(x>88)

[1]false

> all(x>88)

[1]false

> all(x>0)

[1]true

例子1:尋找連續(:)出現1的遊程(run)。注:在乙個0和1組成的序列中,乙個由連續的0或者1構成的串稱為乙個遊程。

x

0,0,

1,1,

1,0,

1,1)

findruns

function

(x,k)

return(runs)

}findruns(x,

3)

由於呼叫c(runs,i),每次執行時都會減慢**的執行速度。我們可以預先分配記憶體空間。

x

0,0,

1,1,

0,0,

1,1)

findruns

function

(x,k)}if

(j>0)

else runs

null

return(runs)

}findruns(x,

3)

R語言 資料結構

向量 my vector c 1,2,8,9,16 my vector 2 4 矩陣 矩陣行列命名,預設先排列 cells c 1,36,24,12 row names c r1 r2 col names c c1 c2 my matrix1 matrix cells,nrow 2,ncol 2,d...

R語言資料結構

字元 character 數值 numeric real numbers 整數 integer 複數 complex 邏輯 logical tf必須大寫 x true 常用方法 名稱維度 型別長度 建立 vector x vector character length 10 this is anno...

R語言 資料結構

向量vector本質作為一維陣列可以包含數字,字元,布林值 a c 1,2,5,3,6,2,4 b c one two three c c true,true,true,false,true,false 矩陣matrix 二維陣列 構造需要通過matrix方法實現 x matrix 1 20,nro...