一、資料類型
概括來說,R可以識別六種基本的資料類型,分別是,雙整型(double)、整型(integer)、字元型(character)、邏輯型(logical)、複數類型(complex)以及原始類型(raw).
1.雙整型(double)
儲存普通數值型資料,可正可負,可大可小,可含小數可不含
R中鍵入的任何一個數值都預設以double型儲存
想知道某個對象是什麼類型,可以使用typeof() 函數進行查看
在資料科學裡,它更常被稱為數值型(numeric)
2.整型(integer)
顧名思義,只能用來儲存正數。
在R中通過在數字後面加大寫字母L的方式,申明該數字以整型方式儲存。
在電腦記憶體中,整型的定義方式要比雙整型更加準確(除非該整數非常大或非常小)
3.字元型(character)
字元型向量用以儲存一小段文本,在R中字元要加雙引號表示
字元型向量中的單個元素被稱為“字串(string)”,注意:字串不僅可以包含英文字母,也可以由數字或符號組成
4.邏輯型(logical)
用以儲存TRUE(真)和FALSE(假),在R中大寫的TRUE和FALSE或者大寫的T和F都被理解為邏輯型資料。
5.複數類型(complex)和原始類型(raw)
複數類型,即形如:1+i 類的資料
原始類型,用來儲存資料的原始位元組
二、屬性
屬性是附加給向量的額外資訊,可以將這些資料理解為“中繼資料(metadata)”
可硬通過attributes()函數來擷取對象的屬性資訊,如果對象無屬性資訊,則返回NULL,即空值。
1.名稱屬性
通過names()函數可以查看對象的名稱屬性,也可以通過形如:names(對象)<-…… 的方式進行賦值,具體如下:
> names(test)NULL> names(test)<-c("one","two","three")> names(test)[1] "one" "two" "three"> test one two three 1 2 3 >
2.維度屬性
通過dim()函數賦值或獲得屬性,若為向量則返回NULL(空值),具體如下:
matrix1<-matrix1(1:20,4,5)> dim(matrix1)[1] 4 5> matrix2<-c(1:20)> dim(matrix2)NULL> dim(matrix2)<-c(4,5)> matrix2 [,1] [,2] [,3] [,4] [,5][1,] 1 5 9 13 17[2,] 2 6 10 14 18[3,] 3 7 11 15 19[4,] 4 8 12 16 20> dim(matrix2)[1] 4 5
3.類
在R中類(class)是對象的屬性,可用class()函數擷取。對於一個標量或向量,返回的就是資料類型,對於一個資料結構,返回的就是他的資料結構。如:> test<-c(1,2,3),之後將講解如何構造並使用自己的類。如果你想移除一個對象的類,可通過unclass()函數或者直接將NULL賦給class屬性即可。
> class(test)[1] "numeric"> matrix<-matrix(1:20,4,5)> matrix> class(matrix)[1] "matrix"
日期與實間
在R中可以通過Sys.time()函數擷取系統時間,而結果看似字串,實則卻是雙整數型,並且類有“POSIXct” 和”POSIXt”兩種。
POSIXct是一個被廣泛使用的用於表示日期與時間的架構。在POSIXct架構下,時間被表示為自1970年1月1日零點(UTC時間)開始所逝去的秒數,並以數值型儲存下來。通過將“POSIXct” 和”POSIXt”兩個類的屬性會提示R將該時間以人類友好的字串形式展示出來。具體如下:
“> now<-Sys.time()> now[1] "2017-07-24 15:42:41 CST"> typeof(now)[1] "double"> class(now)[1] "POSIXct" "POSIXt" ”> class(now)<-NULL> now[1] 1500882162> class(now)<-"POSIXct"> now[1] "2017-07-24 15:42:41 CST"> unclass(now)[1] 1500882162
在R的資料結構中介紹了一個因子的概念,當使用factor()函數對向量進行改造時,會賦予向量一個levels和class屬性, 其中levels屬性包含顯示因子值得一組標籤,而class屬性包含factor.
三、強制轉化
強制轉化一般並不推薦,但有的時候這樣做能夠起到特殊的效果。具體來說,強制轉化規則如下:
1.如果向量中含字串,強制轉化會把所有元素轉化為字元型
2.如果向量中只含數值型或邏輯型,強行轉化會將邏輯型都轉化為數值型(TRUE–>1,FALSE–>0)
> sum(c(T,T,F,F))[1] 2
上例可以計算出一組向量中為真的個數,就是一種強制轉化的妙用
R中還可以選擇一種更為明確的類型轉化方式,as.+資料類型,如
> as.numeric(T)[1] 1