R語言編程藝術# 資料類型向量(vector)

來源:互聯網
上載者:User

標籤:查詢   message   加法   tor   重複   函數式   數字   warning   邏輯   

R語言最基本的資料類型-向量(vector)

1、插入向量元素,同一向量中的所有的元素必須是相同的模式(資料類型),如整型、數值型(浮點數)、字元型(字串)、邏輯型、複數型等。查看變數的類型可以用typeof(x)函數查詢。

> #插入向量元素> x <- c(88,5,12,13)> x[1] 88  5 12 13> x <- c(x[1:3],168,x[4]) #插入168數字在13之前> x[1]  88   5  12 168  13> 

 2、刪除向量中的元素,由於R中的向量是連續儲存的,因此不能插入或刪除元素(故上面的插入代碼實際上重新建立了一個新的向量然後將x指向新的向量,類似於C中的指標)

> #刪除向量中的元素 ^_^> x[1]  88   5  12 168  13> x <- c(88,5,168,13)> x[1]  88   5 168  13> 

3、擷取向量的長量

> #擷取向量的長量> x[1]  88   5 168  13> length(x)[1] 4> 

4、遍曆向量裡所有的元素

>#第一種方法 由於1:length(x)=(1,0),實際上做了兩次迭代> first1function(x){for(i in 1:length(x)){    if (x[i]==1) break}return(i)}> y[1] 1 2 3 4 5 6 7 8> first1(y)[1] 1> 
>#第二種方法 用seq函數產生等差序列,元素間隔為1,解決了第一種效率不高的方法> first2 <- function(x){+     for(i in seq(x)){+         if (x[i]==1) break+     }+     return(i)+ }> > first2(y)[1] 1> 

5、向量與數組、矩陣  數組與矩陣包括列表,在某種意義上實際上都是向量。只不過它們還有額外的類屬性。如:矩陣有行數和更數等。  

> m <- matrix(c(1,2,3,4),nrow = 2,byrow = T)> m     [,1] [,2][1,]    1    2[2,]    3    4> m + 10:13     [,1] [,2][1,]   11   14[2,]   14   17> 

在這裡2x2的矩陣m中儲存為一個四元向量,即(1,2,3,4),並且以儲存為兩行,並以行排序,然後對它加上(10,11,12,13),得最新的矩陣,等效於下面代碼

> m <- matrix(c(1,3,2,4),nrow = 2)> m     [,1] [,2][1,]    1    2[2,]    3    4> m + 10:13     [,1] [,2][1,]   11   14[2,]   14   17> 

 6、迴圈補齊  在對兩個向量使用運算子時,如果要求這兩個向量具有相同的長度,R會自動迴圈補齊(recycle),即重複較短的向量,直到它與另一個向量長度相匹配

> c(1,2,4) + c(6,0,9,20,22)[1]  7  2 13 21 24Warning message:In c(1, 2, 4) + c(6, 0, 9, 20, 22) :  longer object length is not a multiple of shorter object length> 

  等同於下列代碼:

> c(1,2,4,1,2) + c(6,0,9,20,22)[1]  7  2 13 21 24> 

  #矩陣

> x <- matrix(c(1,2,3,4,5,6),nrow = 3)> x     [,1] [,2][1,]    1    4[2,]    2    5[3,]    3    6> x + c(1,2)     [,1] [,2][1,]    2    6[2,]    4    6[3,]    4    8> 

  #矩陣迴圈補齊

> x <- matrix(c(1,2,3,4,5,6),nrow = 3)> x     [,1] [,2][1,]    1    4[2,]    2    5[3,]    3    6> y <- matrix(c(1,2,1,2,1,2),nrow = 3)> y     [,1] [,2][1,]    1    2[2,]    2    1[3,]    1    2> x +y     [,1] [,2][1,]    2    6[2,]    4    6[3,]    4    8> 

  相當於:

    

7、常用的向量運算  包括算術和邏輯運算、向量索引、建立向量等

  #R是一種函數式語言,它的每個運處符(+ - * / 。。。)實際上都是函數

#加法> 2+3[1] 5> "+"(2,3)[1] 5>>c(1,2) + c(3,4)>[1] 4  6>> "+"(2,3,4)Error in `+`(2, 3, 4) : operator needs one or two arguments>#乘法> c(1,2) * c(3,4)[1] 3 8>#減法> c(3,4) - c(1,2)[1] 2 2>#除法> c(3,4) / c(1,2)[1] 3 2>#取餘> c(3,4) %% c(2,3)[1] 1 1> 

8、向量索引   R中最重要也是最常的一個運算子就是索引,使用它來選擇給定向量中特定索引的元素來構成子向量。索引向量的格式是 X[Y](X,Y均是向量),它返回的結果是,X中索引為Y的那些元素。 

 

R語言編程藝術# 資料類型向量(vector)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.