《R語言入門與實踐》學習筆記五

2021-08-09 11:24:23 字數 1882 閱讀 9465

第五天任務:

完成專案模擬***,並通過程式設計學會一下技能:

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 按元素 的方式進行計算.舉例 對乙個數字集進行運算,對其中每乙個元素進行...