(前言:由於本人沒有接觸過程式語言及程式設計,寫的內容可能不是很正確,還請大家多多指教 :D)
向量子集功能在R語言中是用來修改或檢索一個向量中的符合特定條件、項目或種類資料,要使用這個功能時,先將一個向量賦值到一個物件上,然後用方括號 []
指定特定條件即可。
這邊我們直接用例題來學向量的子集好了 :)
例:ooof <- sample(c(rnorm(20),rep(NA, 20)), 20)
從一個由20個常態分配亂數與20個NA值中取20個值結果,並把整個函式賦值到一個變數ooof上。ooof的值如下圖:
向量子集指令功能及寫法如下列:ooof[1:10]
顯示 x的前十個值
如果要檢驗x裡面的直是否為NA時,其實是不可以寫成ooof[is.na(ooof)]
的,因為根據官方文件說明(而且我沒有理解錯誤的話),is.na
函數是檢驗整個向量,不能檢驗向量中的某一些值的,因此如果這樣寫的話,R會給出全部都是NA的結果喔。
這時如果在is.na
前面加一個驚嘆號 !
,可以檢驗這個向量中含有的非NA值,因為驚嘆號代表 “not”,所以放到is.na
裡面代表的是 “is not NA”。這樣寫的話,程式就會吐出以下結果:
要將這組數字放進檢驗條件時(這裡給的條件是ooof > 0
),用 &
符號將兩個條件連結,例:ooof[!is.na(ooof) & ooof > 0]
,結果請看下圖:ooof[ooof >/< 數字]
檢視ooof內大於/小於特定數值的值
ooof[c(x, y, z,)]
檢視x,y,z 對應向量中之數值,例如:填上2,3,4即表示檢視ooof向量中的第2,3,4個值
但是這時候如果我們要檢視第0個值或者是第2598個值時,R就會吐出 numeric(0)
或者是 NA
的結果。(R真的好好喔,不會阻止我問笨問題 :3 )
反之,今天如果只不想檢視第2,3,4個值的時候,我們就在2,3,4前面加個負號,這樣就會直接排除第2,3,4個值,若要再更簡化,就把函數寫成ooof[-c(2,3,4)]
就好了
最後是命名的向量,在R語言裡,我們可以把每一個值賦予一個名字,命名方法可以看下面範例
如果要查看向量的名字,那麼就把上面的向量賦值到一個變數上,然後用names
函數檢視名字,例:先把上面那組向量賦值到kirbland上,然後就可以用names(kirbland)
來看名字了。
反之,如果要查看一個名字對應的值,使用vect
函數加方括號,在括號中使用雙引號指定名字,即可檢視對應值。
今天的向量子集就學到這邊,明天繼續學矩陣及Data frame :)
(2019-10-3 勘誤:第三段之rnorm「隨機數」應為 「常態分配亂數」)