《R語言入門與實踐》第一章:R基礎(chǔ)

前言:零基礎(chǔ)開始學(xué)習(xí)的小白老玛,文科生沒接觸過編程,所以想通過輸出倒逼學(xué)習(xí),通過簡書記錄自己的學(xué)習(xí)過程捅厂,已經(jīng)有很多前輩做了很好的R語言各種教程工作,感謝能站在巨人們的肩膀上開始學(xué)習(xí)资柔,我參考學(xué)習(xí)過的鏈接也會直接附上焙贷。輸出的內(nèi)容僅僅是我摸索的過程,以促進學(xué)習(xí)為出發(fā)點贿堰,如果也能有幸?guī)椭胶髞淼男』锇檎奚郑埠荛_心~

筆記目錄:
1.0 R及Rstudio的安裝和參考文獻介紹
1.1 RStudio的用戶界面
1.2 運行R命令、創(chuàng)建對象
1.3 使用R函數(shù)
1.4 可放回抽樣
1.5 編寫自定義函數(shù)
1.6 為函數(shù)自定義參數(shù)
1.7 學(xué)會使用R腳本編輯代碼
1.8 小結(jié)

1.0 安裝R和RStudio

R安裝:https://www.r-project.org/
RStudio安裝:https://www.rstudio.com/
可以看下面詳細的教程:R 安裝詳解_CSDN博客

我學(xué)習(xí)的書是:R語言入門與實踐 (ituring.com.cn)
下面的學(xué)習(xí)主要以這本書的結(jié)構(gòu)和內(nèi)容安排進行記錄羹与,因為純小白入門故硅,希望剛開始能有一個完整的知識體系。這個過程中也會搜索網(wǎng)絡(luò)資源進行輔助學(xué)習(xí)纵搁,邊練習(xí)邊記錄契吉,希望能比較扎實的學(xué)會。

本書設(shè)置了三個虛擬的項目诡渴,通過R實現(xiàn)開賭場的夢想:
項目1:一對可以用來生成隨機數(shù)字的骰子(非均勻骰子)
項目2:一副可以用來發(fā)牌和洗牌的撲克(玩撲克牌)
項目3:一臺模擬真實的視頻彩票終端機的老虎機(老虎機)
我覺得這個設(shè)計很有趣捐晶,也很科學(xué)合理,“開賭場”就是一個大項目妄辩,具體通過完成一個一個小項目惑灵,在這個過程中實踐R的基本操作,使得每個操作有一個具體的目標眼耀。如果像說明書一樣去學(xué)習(xí)英支,恐怕很枯燥,很難推進下去哮伟。

正如書中所說:

認認真真地跟著本書完成全部三個項目之后干花,你將掌握數(shù)據(jù)科學(xué)家所必需的專業(yè)技能妄帘。具體來說,你將學(xué)會如何將數(shù)據(jù)存儲到計算機內(nèi)存中池凄,如何訪問計算機內(nèi)存中的數(shù)據(jù)抡驼,以及如何在必要的時候?qū)?nèi)存中的數(shù)據(jù)值進行轉(zhuǎn)換。你還將學(xué)會如何用R編寫自己的程序肿仑,并將其用于分析數(shù)據(jù)和運行模擬致盟。(P2)

本章開頭第一句話:“本章概述了R編程的基礎(chǔ)技能,學(xué)完之后你就可以立即上手編寫R程序了尤慰×笪”給了我很大的動力和激勵,信心滿滿的開始學(xué)習(xí)啦伟端!

1.1 RStudio的用戶界面

以下是RStudio的基礎(chǔ)界面杯道,四個主要的窗口:
RStudio界面.png

R和RStudio都是幫助我們與計算機進行對話的工具。書中一個形象的比喻责蝠,RStudio是話筒蕉饼,而R則是溝通所用的語言。而從界面來看玛歌,R是毛坯房,RStudio是精裝房擎椰,我們從操作更方便支子,界面更美觀的RStudio開始吧~

1.2運行R命令、創(chuàng)建對象

在R語言中达舒,#為注釋符號(commenting symbol)值朋,#后的內(nèi)容不會被當(dāng)作R命令執(zhí)行。我們在編寫程序過程中要養(yǎng)成添加注釋的習(xí)慣巩搏,不然過一段時間再打開昨登,都不知道寫的什么了,尤其像我這種小白贯底,一定要邊寫邊注釋嘍丰辣!
和書中保持一致,以下代碼中禽捆,一個#代表添加的注釋笙什,兩個#代表程序的執(zhí)行結(jié)果
在控制臺窗口最下面的>提示符后鍵入代碼胚想,即R命令(command)琐凭,回車后,計算機就會執(zhí)行該命令浊服。

#我的第一行代碼统屈,生成骰子的六個數(shù)字
#運算符(:)胚吁,表示返回兩個整數(shù)值之間的所有整數(shù),快速生成數(shù)字序列(向量)
1:6
##1 2 3 4 5 6

創(chuàng)建R對象:確定一個名稱愁憔,將數(shù)據(jù)用賦值符號(<-)賦值給它腕扶,快捷鍵Alt+-。

  • 創(chuàng)建的R對象會顯示在右上方的環(huán)境窗口惩淳,這里會顯示最近一次打開RStudio創(chuàng)建的所有R對象蕉毯。
  • 也可以用ls命令,查看已經(jīng)命名的哪些R對象思犁。ls()
  • R對象命名規(guī)則:不能以數(shù)字開頭代虾;不能有特殊符號,如!$^@*&等激蹲;同時區(qū)分大小寫棉磨,nameName是兩個不同的對象。
  • R可以自由運算学辱,也可以以對象進行整體運算乘瓤,R采用元素方式執(zhí)行運算(相同的運算應(yīng)用于該數(shù)字集的每個元素)
#創(chuàng)建一個對象,die(骰子)
die <- 1:6
#查看儲存內(nèi)容策泣,輸入名稱衙傀,回車
die
## 1 2 3 4 5 6
#元素方式運算
die-1
## 0 1 2 3 4 5
die/2
## 0.5 1.0 1.5 2.0 2.5 3.0
#兩個向量的運算,R會執(zhí)行向量的每個元素對應(yīng)運算萨咕,產(chǎn)生同樣長度的新向量统抬。
die*die
## 1  4  9 16 25 36
#如果兩個向量長度不相等,會重復(fù)運算較短的向量(向量循環(huán))危队;
#如果長向量不是短向量長度的整數(shù)倍聪建,R會返回警告信息。
die + 1:2
## 2 4 4 6 6 8
die + 1:4
## 2 4 6 8 6 8
## Warning message:
## In die + 1:4 : 長的對象長度不是短的對象長度的整倍數(shù)

1.3使用R函數(shù)

我們已經(jīng)創(chuàng)建了一個虛擬骰子茫陆,如何實現(xiàn)隨機抽樣呢金麸?這個時候就需要用到R函數(shù)。

  • R函數(shù)的使用方法:名稱+()簿盅,()可以看作函數(shù)“觸發(fā)器”挥下。
  • 如果鍵入一個函數(shù)沒有加(),R會展示這個函數(shù)所存儲的代碼桨醋。
  • 函數(shù)中的數(shù)據(jù)該函數(shù)的參數(shù)(argument)见秽,參數(shù)可以是原始數(shù)據(jù)、R對象讨盒、另一個R函數(shù)的返回結(jié)果(執(zhí)行方式從內(nèi)到外)解取。
  • sample(隨機抽樣)這個函數(shù),可以幫助我們模擬擲骰子返顺。
#R函數(shù)的執(zhí)行方式是從內(nèi)到外禀苦。如蔓肯,下面例子R先找到die這個對象,然后計算6個數(shù)值的平均值振乏,再進行四舍五入蔗包。
round(mean(die))
## 4
sample(x=die,size=1)
sample(die,size=1)
sample(die,1)
## 3
  • 以上三行命令效果都是一樣的,一般前面1-2個很熟悉的參數(shù)慧邮,可以不寫參數(shù)名稱调限,R會根據(jù)參數(shù)順序自動識別)
  • 如果不知道如何設(shè)置函數(shù)的參數(shù),可以用args函數(shù)查看參數(shù)误澳。
args(sample)
## function (x, size, replace = FALSE, prob = NULL) 
#sample默認為不可放回抽樣耻矮,即replace = FALSE。因此如果同時抽取兩個數(shù)忆谓,不可能相同裆装。
#將replace改為TRUE,設(shè)定為可放回抽樣倡缠,才可以真正模擬骰子哨免。

1.4 可放回抽樣

下面模擬一對骰子的投擲,并計算兩個骰子點數(shù)的和(隨機可放回抽樣):

sample(die,size=2,replace=TRUE)
#將這一對模擬的骰子創(chuàng)建為R對象dice昙沦,把抽取骰子的這組結(jié)果保存到對象中琢唾,結(jié)果就不會改變了。
dice <- sample(die,size=2,replace=TRUE)
dice
sum(dice)
## 9

1.5 編寫自定義函數(shù)

接下來盾饮,我們把剛才模擬擲一對骰子的R程序進行打包采桃,生成一個新的函數(shù)roll,這樣每次重新投擲就變得更加方便丐谋。每次調(diào)用roll()函數(shù),R都會返回兩個骰子點數(shù)的和煌珊。
為什么要自定義函數(shù)号俐?

  • 自定義的函數(shù)和R中的其他函數(shù)沒有任何區(qū)別。
  • 可以隨時按照自己的需求創(chuàng)造出新的定庵、定制化并且可以重復(fù)使用的工具吏饿。
  • 就像在excel中增加一個自定義選項加入菜單欄,但我們沒辦法完全自定義程序蔬浙。

如何自定義函數(shù)猪落?

  • R函數(shù)實際上就是一種不同類型的R對象。
  • 任何一個函數(shù)包含三部分:函數(shù)名畴博、程序主體笨忌、參數(shù)集合
  • 編寫自定義函數(shù)只需要把這三部分內(nèi)容定義好俱病,并存儲在一個R對象之中官疲。
  • 函數(shù)構(gòu)建器:這里用到function()函數(shù)袱结。funtion()函數(shù)+{},可以將后面{}的所有代碼構(gòu)建成一個新的函數(shù)途凫。
    構(gòu)建函數(shù)流程.png(P20)
roll <- function(){
  die <- 1:6
  dice <- sample(die,size=2,replace=TRUE)
  sum(dice)
}
roll()
## 6

1.6為函數(shù)自定義參數(shù)

你可以在自定義函數(shù)中設(shè)置任意數(shù)量的參數(shù)垢夹,只要在function后的括號中列出它們的名稱,并且用逗號隔開即可维费。

  • 設(shè)置參數(shù)的好處是果元,可以調(diào)用任意范圍內(nèi)的值,如sample在任意范圍內(nèi)進行隨意抽樣犀盟。
  • 如果沒有設(shè)置參數(shù)值而晒,那么R會用該參數(shù)的默認值代替(前提是在定義函數(shù)時設(shè)置了該參數(shù)的默認值)。
#增加這個參數(shù)的好處是且蓬,bones可以設(shè)置為任意范圍數(shù)列欣硼,可以投擲不同類型的骰子。
roll2 <- function(bones){
  dice <- sample(bones,size=2,replace=TRUE)
  sum(dice)
}
roll2(bones = 1:6)
## 8
#可以給bones設(shè)置一個初始默認值恶阴。
roll2 <- function(bones = 1:6){
  dice <- sample(bones,size=2,replace=TRUE)
  sum(dice)
}
roll2()
## 7

1.7學(xué)會使用R腳本編輯代碼

我們在控制臺編輯的命令和創(chuàng)建的函數(shù)诈胜,如果想編輯和重復(fù)使用,用R腳本(script)創(chuàng)建代碼草稿冯事,會非常便捷和方便焦匈。

  • 創(chuàng)建方式:File>New File >R Script
  • 運行腳本:Ctrl+回車,可以實現(xiàn)Run的功能昵仅,默認運行鼠標光標所在的行缓熟。用鼠標選中一段代碼,便會運行這段代碼摔笤。

使用編程腳本文件的好處:
1. 可中斷性
第一天編輯的工作保存腳本文件够滑,第二天可以在第一天基礎(chǔ)上繼續(xù)編寫程序。有時候開始一個項目吕世,每次關(guān)開界面需要很大的勇氣彰触,很多操作都得從頭再來。
2. 可再現(xiàn)性
腳本文件使做得所有工作有記錄可查命辖,很強的可再現(xiàn)况毅、可重復(fù)性,對于很多科研項目需要不算重復(fù)調(diào)試尔艇,是很大的幫助尔许!
3. 便于交流分享
可以把腳本分享給別人,適合團隊工作终娃,可以減少很多重復(fù)性工作味廊。

1.8小結(jié)

學(xué)完這一章,已經(jīng)打好了R初步操作的基礎(chǔ),已經(jīng)在計算機中存儲了一對虛擬的骰子(dice)和模擬骰子骰子的roll函數(shù)毡们,能夠初步通過R語言和計算機交流了迅皇。但今天看一個教程視頻,up主說:“敲1萬行代碼才可能入門衙熔!”第一章登颓,我敲了75行代碼(加注釋),慢慢積累嘛红氯,已經(jīng)走出最難的第一步啦框咙!

總結(jié):R語言最重要的兩個組成部分:

  1. 對象:用來存儲數(shù)據(jù);
  2. 函數(shù):用來操作分析數(shù)據(jù)痢甘。
  3. R還使用+喇嘱、-、*塞栅、/和<-者铜、:等運算符來完成基本的任務(wù)。

通過本章放椰,我們已經(jīng)能夠利用R對象在計算機中存儲數(shù)據(jù)作烟,并通過R函數(shù)將一些復(fù)雜的計算任務(wù)自動化。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末砾医,一起剝皮案震驚了整個濱河市拿撩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌如蚜,老刑警劉巖压恒,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異错邦,居然都是意外死亡探赫,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門撬呢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伦吠,“玉大人,你說我怎么就攤上這事倾芝√智冢” “怎么了箭跳?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵晨另,是天一觀的道長。 經(jīng)常有香客問我谱姓,道長借尿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮路翻,結(jié)果婚禮上狈癞,老公的妹妹穿的比我還像新娘。我一直安慰自己茂契,他們只是感情好蝶桶,可當(dāng)我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著掉冶,像睡著了一般真竖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上厌小,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天恢共,我揣著相機與錄音,去河邊找鬼璧亚。 笑死讨韭,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的癣蟋。 我是一名探鬼主播透硝,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼梢薪!你這毒婦竟也來了蹬铺?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤秉撇,失蹤者是張志新(化名)和其女友劉穎甜攀,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體琐馆,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡规阀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瘦麸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谁撼。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖滋饲,靈堂內(nèi)的尸體忽然破棺而出厉碟,到底是詐尸還是另有隱情,我是刑警寧澤屠缭,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布箍鼓,位于F島的核電站,受9級特大地震影響呵曹,放射性物質(zhì)發(fā)生泄漏款咖。R本人自食惡果不足惜何暮,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望铐殃。 院中可真熱鬧海洼,春花似錦、人聲如沸富腊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赘被。三九已至词疼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間帘腹,已是汗流浹背贰盗。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留阳欲,地道東北人舵盈。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像球化,于是被迫代替她去往敵國和親秽晚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,047評論 2 355

推薦閱讀更多精彩內(nèi)容