前面3天,重新認識了R語言的判斷(ifelse)、迴圈(loop)及函式(function),算是剛好可以把職業欄改成R語言碼農了,但R語言碼農還有很多要學習,今天來砍就R語言基礎Part4
依稀記得國小時,外公在關西的果園採收後,幾個阿姨和媽媽會開始按照水果的大小作分級裝箱,選果的作業全憑女性長輩們的經驗放在不同size的箱子;後來農會有補助,外公買了厲害的自動選果機(就是哪種把水果倒下去輸送帶上,她會自動滾到適合自己size的箱子),我們小人們超愛圍在機器旁裝忙,這種自動化很神奇,
上一篇文章的最後,我們探索到R語言自動推斷型別的能力,接下來我們再往資料走近一步,來認識R語言常用的資料型別。
就像其他程式語言中的變數(object)有著型別(Data Type),在R語言中,向量也有六種基本的資料型別:
基本的三劍客 字串、數值還有日期,疑,就少了日期! 快補上她的位置。
變數要指派的運算子也很簡單,三個同義的方式:
http://stat.ethz.ch/R-manual/R-patched/library/base/html/assignOps.html
來體驗R語言中的自動型別推斷(type inference),碼農的自動選果分級機,我外公也有一台厲害的!
我們在資料夾MyR新增一支Day09.R
在Day09.r輸入以下程式碼
v <- "正妹身高"
print(class(v))
print(typeof(v))
自動推斷character
v <- 160.5
print(class(v))
print(typeof(v))
自動推斷成數值
v <- 47L
print(class(v))
print(typeof(v))
v <- 1+2i
print(class(v))
print(typeof(v))
v <- TRUE
print(class(v))
print(typeof(v))
v <- charToRaw("Hello")
print(class(v))
print(typeof(v))
v <- Sys.time()
print(class(v))
print(typeof(v))
雖然R語言有自動推斷,不過推斷還是有關鍵字元。
在Day09.r輸入以下程式碼
print("字元結果:")
is.character(1)
is.character("1")
""
引號重要!
print("數值結果:")
is.numeric(1)
is.numeric("1")
print("整數結果:")
is.integer(3.14)
is.integer(3)
is.integer(as.integer(3))
必要用轉換的招!
print("邏輯結果:")
is.logical(TRUE)
is.logical(T)
is.logical("TRUE")
保留字TRUE
FALSE
T
F
is.na(NA)
is.na("")
保留字NA
空字串和Null不同,Null是指值的狀態。
isDate <- function(x) {
tryCatch(!is.na(as.Date(x, date.format = "%Y/%m/%d")),
error = function(err) {
FALSE
})
}
isDate("2016/12/31")
isDate("2016/12/32")
在Day09.r輸入以下程式碼
as.character(3.14)
as.character(1)
as.character(TRUE)
as.numeric("-3.14")
as.numeric("-3")
as.numeric(TRUE)
as.numeric("3點14")
TRUE
轉換為1,最後一個"3點14"
轉換失敗,回傳NA
。
as.integer("-3.14")
as.integer("-3")
as.integer(TRUE)
as.integer("3點14")
轉換為整數位,小數位會被Truncate掉
最後一個"3點14"
轉換失敗,回傳NA
。
as.Date("2016/12/31", date.format = "%Y/%m/%d")
as.Date("2016/02/30", date.format = "%Y/%m/%d")
R語言中的Null值(空值)是以NA
表示,Null代表著物件值的狀態,不能作為運算。
在Day09.r輸入以下程式碼
is.na(NA)
#轉換失敗時拋回NA
x <- as.numeric("3點14")
x
is.na(NA)
R語言的資料型別名詞:
大多數狀況是相同的:
.NET/Java世界中,Class是藍圖,實體則通常是物件object。
好!先停,我們舉個R語言內建資料集的案例來觀察Variable Explorer(熱鍵Ctrl
+ 8
)就好:
data()
R語言datasets
package中有內建的資料集,有時安裝新的Package後(rpart
、rMaps
、dplyr
..),也會有練習用的資料集。
v1 <- HairEyeColor
print(class(v1))
print(typeof(v1))
print(mode(v1))
print(storage.mode(v1))
print("---我是分隔線----")
v2 <- cars
print(class(v2))
print(typeof(v2))
print(mode(v2))
print(storage.mode(v2))
Variable Explorer
執行結果:
哈!攻城獅初學時先了解class
和type
,以後有需要再慢慢理解其他的用途。
基礎訓練:
台北田徑場整修到明年世大運,好想跑
攝於2015 台北田徑場