Day 7- 邏輯&字符向量
(前言:那個,由於本人不是專業的程式設計師,寫的內容可能不是很正確,還請大家多多包含/指教 :D)
今天一次講兩個主題,所以有一點點長呢 :’)
R語言中向量可以再細分成兩個種類:原子向量(atomic vector)和列表(list)。這兩種向量總共有3個相同的屬性:類別、長度(包含的元素)及屬性。
原子向量包含邏輯向量、常數向量、數值向量及字符向量,另外還有兩種不常見的原子向量:複合向量(complex vector)及raw向量(找不到精確的對應翻譯,啊不過對岸好像有人說這是「原始向量」??)。
不同於原子向量,列表向量可以包含各式各樣的資料型態(文字、數字等),在R語言中,列表是以list
函數表示。
今天要學的就是原子向量裡的邏輯及字符向量。
邏輯向量通常會有三種值:TRUE
(正確), FALSE
(錯誤), 及NA
(無 (not available),
這部分以後會詳細做說明)
今天要用一個條件檢視一個向量的時候,要先把一個向量儲存到一個變數上。接下來,給這個變數一個條件,再儲存到另一個變數上,印出結果,即可以檢視邏輯結果。程式實作如下列:
(註:#
萌萌的小井字號代表註解,要對程式碼進行註解時在註解前面打井字號,R在跑程式的時候就會自動跳過無辜的井字號跟後面的字,不會把他們嚕成一團 ˊuˋ。)
結果如下列:
(因為0.5, -10小於1,因此輸出結果FALSE,其餘兩數大於1,輸出結果TRUE)
(大/小等於及不等於運算子寫法:大等於>=
/ 小等於<=
/ 不等於 !=
/ 確切等於==
)
如果要再使用另一個條件檢視同一變數(num_vect),只要先鍵入變數名稱,再鍵入條件,即可檢視新條件的邏輯結果。
其他R語言邏輯符號包含:
(假設a, b為兩個不同的敘述)
a | b
(垂直條):R語言中計算邏輯的 “OR”,也就代表a或b其中一個敘述是正確的。a & b
: 代表 “AND”,a及b皆正確接下來學習的是字符向量
要新增一個字符向量很簡單,方法就和新增一個數字向量差不多,只要輸入函數、引號(因為要讓R知道這些字是「字串」)及最重要的字符。例如建立一個my_char變數,內有"My" "name" "is"三個字:my_char <- c("My", "name", "is")
上面的例子將三個字my, name, is拆成三個字串,若今天要將三個字串合併成一個字串,用paste
函數及collapse
引數組合(Combine!!!),寫法如下:paste(my_char, collapse = " ")
啊不過要記得這邊的兩個引號之間必須為空白,因為我們要告訴R用空格取代引號。輸出結果就會是:”My name is”
同時,我們也可以在字符數列的後面加上另外一個字串,方法就像這樣:c(my_char, "Dave")
,這樣輸出的資料就會是:”My” “name” “is” “Dave”
Paste函數也有第二個用法,也就是先在指定兩個字串後加上sep引數,要R把兩個字串拆散,並使用替代符號。例如:paste("Hello", "world!", sep = " ")
。
剛剛說的都是用空格取代字串的中間間隔,今天如果要用字符取代字串的中間間隔,一樣可以用paste
函數。方法如下列:paste(1:3, c("X", "Y", "Z"), sep = "")
。這邊我們用1-3的數列與XYZ字串結合,數字與字母中間沒有空格,輸出結果為:"1X" "2Y" "3Z"
今天如果要將一個有限數量的數字/字串與多個數字/字串結合時,R 會自動重複使用有限的數字或字串。例如:paste(LETTERS, 1:4, sep = "-")
,這行程式碼有26個字串(這邊的LETTERS是R語言的一個變數,會自動輸入26個英文字母),要與1-4的數列結合,中間以 “-“ 符號做空格,輸出結果如下:
這邊值得注意的是,數字1,2,3,4被R強迫當了字串(因為數字也在引號內)
字符與邏輯數列的學習就到這邊告一段落啦 ˊˇˋ(灑小花花,
明天繼續寫缺失數據吧
額外參考資料: