習成了30天見面會第一個主題R:語言環境操作,接著我們要航向R語言的偉大航道了!
30天見面會R語言第二個主題:R語言基礎。
在資料庫知識探索(KDD)中,收集完成的觀測數據要成為可以被探勘的資料集(dataset)前,通常會先經過清理及轉換等幾個流程,這部分也通常最費工,而流程控制的基本組成元素就是判斷式及迴圈,兩種流程控制在各程式語言都有,我們來試試R語言的!
條件式是我們在電腦程式中指引程式方向要用的句型,實際執行時,電腦會根據運算式的 Boolean(True/False) 值決定要執行的陳述式。
我們在專案程式館新增一個資料夾MyR,然後新增一支Day06.R
程式規格:
將吹東風後的訊號指派(<-
)給x,此時使用if
語法,程式判斷若x等於吹東風就通知: 啟稟丞相!起風了。
在Day06.R中輸入程式碼
#if
x <- "吹東風"
if (x == "吹東風") {
cat(x, "啟稟丞相!起風了", "\r\n")
cat("快!通知江東!")
}
執行結果:
#help(cat)
= Concatenate and print(函數:字串連結並且列印到Console)
程式規格:
丞相把是否派馬謖駐守街亭的決定指派(<-
)給x,此時使用if else
語法,程式若判斷x == TRUE就列印"馬謖守街亭,注意水源!",反之就列印"魏延守街亭"
#if else
x <- TRUE
if (x) {
cat(x, "馬謖守街亭,注意水源")
} else {
cat(x, "魏延守街亭,妥當!")
}
執行結果:
這邊我們先複習幾個R語言的語法重點
TRUE
和FALSE
都是大寫!\r\n
)=
和<-
同義,但R Manual建議的指派運算子是 <-
,可以在任何地方使用。程式規格:
丞相將領軍進攻南蠻的任務人選指派x,使用if
語法,判斷若x若等於1就列印"關羽",依此類推1,2,3,4,若都不等於1,2,3,4,則派常山趙子龍。
在Day06.R中輸入程式碼
#nested if else
x <- sample(1:5, size = 1)
if (x == 1) {
cat(x, "遣關羽")
} else if (x == 2) {
cat(x, "遣張飛")
} else if (x == 3) {
cat(x, "遣馬超")
} else if (x == 4) {
cat(x, "遣黃忠")
} else {
cat(x, "遣趙雲")
}
執行結果:
#help(sample)
= Random Samples and Permutations (函數:亂數取數,暫時我們先不設定亂數種子,預設是時間。)
那麼有沒有比較好閱讀的switch?
有的!但閱讀起來需要轉一下。
在Day06.R中輸入程式碼
x <- sample(1:5, size = 1)
y <- switch(
EXPR = x,
"1" = "遣關羽",
"2" = "遣張飛",
"3" = "遣馬超",
"4" = "遣黃忠",
"遣趙雲")
cat(x, y)
執行結果:
如果有多個條件式,可以用以下兩種運算子串接&&
: AND||
: OR
語法句型: ifelse(test, yes, no)
ifelse(x >= 1, "晚安!我要下去領500了", "繼續努力po文")
執行結果:
是不是和C# ?:
運算子類似。
進階一點還有stopifnot 、tryCatch,今天我們先複習簡單的判斷式,有機會再到R Manual試試進階!
參考:
R-Manaul相關連結:
switch
http://stat.ethz.ch/R-manual/R-patched/library/base/html/switch.html
stopifnot
http://stat.ethz.ch/R-manual/R-patched/library/base/html/stopifnot.html
trycatch
http://stat.ethz.ch/R-manual/R-patched/library/base/html/conditions.html
ifelse
http://stat.ethz.ch/R-manual/R-patched/library/base/html/ifelse.html
航向偉大航道
2014-10攝於Lisboa,Portugal
好了筆記一下ʕっ•ᴥ•ʔっ
//
在這裡認知到兩個function
cat():類似C++的cout
sample():類似C++的random
//
if、else;switch 大致相同,但不知道有沒有while
ifelse():類似C++的?:用法類似,若非什麼則什麼
//
help()是真的好好用,想查就查,也有全名,我本來想說cat...到底是在貓咪三小...、到底為什麼是print...,現在知道了哈哈,讚(◍•ᴗ•◍)
//1110305(六)0851_By Zi
話說這裡還有另一個Bug...,這裡竟然不能編輯留言...,我傻眼...
//1110305(六)0852_By Zi