第五天任務:
完成專案模擬***,並通過程式設計學會一下技能:
1)運用實用策略設計程式。
2)使用if和else語句告訴r在什麼時候做什麼事。
3)通過建立查詢表的方法找到特定的數值。
4)使用for,while和repeat迴圈語句使重複性操作自動完成。
通過設計乙個r函式play()搭建乙個真正可以執行的***,play()函式需要完成兩個任務。首先,它需要隨機產生三個符號。其次,它需要根據產生的符號組合計算相應的中獎金額。
第一步模擬動作容易實現,可以用sample函式隨機生成三個符號,***中的符號包括:鑽石(dd),七(7),三條槓(bbb),兩條槓(bb),一條槓(b),櫻桃(c)和零(0),符號的選擇完全是隨機的,但是每個符號出現的概率不同:
get_symbols
第二步將為隨機生成的結果賦值,而***有著非常複雜的返還機制,大體概括為:
(1)三個符號完全相同(但不能是符號0)。
(2)三個帶槓的符號(任意組合)。
(3)乙個或多個櫻桃。
鑽石相當於百搭牌,可以被鑽換為不同的牌,但是百搭牌有乙個例外,除非組合中有乙個櫻桃,否則不能把百搭牌當作櫻桃使用。所以,根據已知資訊寫出計算函式score()。
計算***中獎金額非常複雜,但是可以將乙個函式通過三個簡單的策略簡化這個任務。
(1)將複雜的任務分解為一些簡單的子任務。
(2)使用例項。
(3)用通俗的語言描述解決方案,然後將其轉化為r**。
r中可以使用if/else語句在特定條件下執行特定的任務,類似於c/c++中的if使用方法。
if(this){that}else{}
其中this應該為某個邏輯測試或者返回true或者false的r表示式。它只能返回單個true或者false,如果其返回結果是一串向量式的true和false,那麼if語句只會使用邏輯向量的第乙個元素並且輸出乙個警告資訊,可以使用運算子any或者all將邏輯向量壓縮。
trunc()函式接受乙個數值作為它的輸入,並返回該數值的整數部分,也就是取整函式,而a-trunc(a)就是取小數部分。
使用if/else語句可以將程式分解為8個子任務。
1.測試***產生的符號是否為三個相同的符號。
2.查詢三個相同的符號相應的中獎金額。
3.測試符號組合是否全是槓。
4.分配5美元獎金。
5.計算出現的櫻桃個數。
6.根據出現的櫻桃個數計算中獎金額。
7.計算出現的鑽石個數。
8.根據出現的鑽石個數調整中獎金額。
unname函式返回乙個物件的副本,但是會將其名稱屬性移除。
當score函式定義好之後,play函式的編寫就可以成功了。
play
symbols
print(symbols)
score(symbols)
play()函式在rstudio中執行結果:
-----------------------------注-------------------------------
1.本學習記錄來自garrett grolemund先生所著《hands-on programming with r》(中文名r語言入門與實踐)一書。
《R語言入門與實踐》學習筆記四
第四天任務 完成專案玩撲克牌後1 2,並通過專案學會以下技能 1 從乙個資料集中抽取個別資料值。2 在乙個資料集中改變個別資料的取值。3 編寫邏輯測試程式。4 使用r的缺失值符號na。可以將該專案後1 2分成三個子任務 1.編寫用來發牌和洗牌的函式。2.改變點數系統以適應不同的撲克遊戲。3.管理撲克...
R語言學習筆記 初識(五)
資料框合併 merge函式 這篇參考 其中通俗點說,就是什麼都不加的話,比如寫乙個all t的話,兩個矩陣或數列相當於貼上 如果加上by 就是在by後面的進行合併,那麼行去並集,其他的列會有角標x,y 如果當x,y的列不同的話,需要用by.x 第乙個表的列,by.y 第二個表的列 資料標準化 標準化...
《R語言入門與實踐》第一章 R基礎
本章介紹了 r 語言的基礎知識 使用命令 r 進行命令列的實時編譯 用於儲存資料的,設定乙個名稱 a 1 6 規則1 不能以數字開頭 規則2 不能使用 等符號 命令 ls r語言以 element wise execution 按元素 的方式進行計算.舉例 對乙個數字集進行運算,對其中每乙個元素進行...