R語言入門與實踐筆記(第二章)

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

一疆偿、項目1:非均勻骰子

第一章 R基礎

目錄
1.1 R語言及Rstudio的安裝
1.2對象
1.3 函數(shù)
1.4 可放回抽樣
1.5 編寫自定義函數(shù)
1.6 參數(shù)
1.7 總結(jié)

1.1 R語言及Rstudio的安裝,網(wǎng)上很多教程大家可以搜索下铆帽,這里就不說啦~

1.2對象

1氯檐、ls()代表查看環(huán)境中已經(jīng)命名了哪些R對象

die <- 1:6
die
## 1 2 3 4 5 6
ls()
## "die"

2蜕窿、%*%代表執(zhí)行內(nèi)乘法,只有當?shù)谝痪仃嚨牧袛?shù)與第二個矩陣的行數(shù)相等時才可運算(m×n %*% n×k = m×k)殷绍。計算原理如下:

2.png
A=matrix(1:12,nrow=3,ncol=4)
A
##      [,1] [,2] [,3] [,4]
  [1,]    1    4    7   10
  [2,]    2    5    8   11
  [3,]    3    6    9   12
B=matrix(1:12,nrow=4,ncol=3)
B
##     [,1] [,2] [,3]
 [1,]    1    5    9
 [2,]    2    6   10
 [3,]    3    7   11
 [4,]    4    8   12
A %*% B
##      [,1] [,2] [,3]
  [1,]   70  158  246
  [2,]   80  184  288
  [3,]   90  210  330

3染苛、%o%代表執(zhí)行外乘法,不受矩陣行列限制

x = matrix(1:4, nrow = 2);x
##      [,1] [,2]
  [1,]    1    3
  [2,]    2    4
y = matrix(2:5, nrow = 2);y
##      [,1] [,2]
  [1,]    2    4
  [2,]    3    5
x %o% y
## , , 1, 1 #此處含義為取矩陣y的第一行第一列

       [,1] [,2]
  [1,]    2    6
  [2,]    4    8

  , , 2, 1

       [,1] [,2]
  [1,]    3    9
  [2,]    6   12

  , , 1, 2

       [,1] [,2]
  [1,]    4   12
  [2,]    8   16

  , , 2, 2

       [,1] [,2]
  [1,]    5   15
  [2,]   10   20
# 可以看出運算結(jié)果為矩陣x中的元素分別擴大y中元素的倍數(shù)

4主到、t()執(zhí)行矩陣的轉(zhuǎn)置

t(x)
##      [,1] [,2]
  [1,]    1    2
  [2,]    3    4

5茶行、det()獲得矩陣的行列式。注意:能求行列式的矩陣一定是正方形矩陣即(m×m)登钥,具體方法比較繁瑣畔师,大家可以看這里的描述,非常詳盡:https://zh.wikihow.com/%E6%B1%823X3%E7%9F%A9%E9%98%B5%E7%9A%84%E8%A1%8C%E5%88%97%E5%BC%8F

1.3 函數(shù)

1牧牢、round()四舍五入取整

round(3.1415926)
## 3

2看锉、factorial()階乘

factorial(3)
## 6

3姿锭、sample()有兩個參數(shù)(argument):一個名為x的向量,一個名為size的數(shù)字伯铣。表示從向量x中抽取size個元素并返回

sample(x = 1:4, size = 2)
## 4 2
# 明白sample函數(shù)呻此,我們可以開始擲骰子
sample(die, size = 1)
## 6
sample(die, size = 1)
## 5

4、agrs()當你新學一個函數(shù)時腔寡,此函數(shù)可以幫你查看這個函數(shù)中的所有參數(shù)名

args(sample)
## function (x, size, replace = FALSE, prob = NULL) 
## NULL

1.4 可放回抽樣

我們可以回顧下擲骰子的問題焚鲜,我們只用了兩個參數(shù),而這個replace參數(shù)的含義為抽樣后是否放回的意思

sample(die, size = 2, replace = FALSE) #這樣會導致我們永遠無法得到一個對子蹬蚁,因為不放回
## 4 5
sample(die, size = 6, replace = TRUE) #這樣可以正確模擬一對骰子恃泪,因為放回
## 1 1

這種可放回抽樣法是創(chuàng)建獨立隨機樣本的一種簡單方法外莲。

一對骰子總點數(shù)的計算sum()

dice = sample(die, size = 2, replace = TRUE)
dice
## 3 6
sum(dice)
## 9

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

任何一個函數(shù)包含三部分:函數(shù)名臂痕、程序主體以及參數(shù)集合润努。編寫自定義R函數(shù)時,我們需要定義好這三部分叽粹,并將他們各自存儲在一個R對象之中。這里我們用到function()函數(shù)却舀。調(diào)用方法為my_function = function(){}

function的作用是將大括號中的所有代碼構(gòu)建成一個函數(shù)虫几。例:

roll <- function(){
  die <- 1:6
  dice <- sample(die, size = 2, replace = TRUE)
  sum(dice)
} #該函數(shù)即是我們擲一對骰子的函數(shù)了

roll() #這個()可以理解為這個函數(shù)的“觸發(fā)器”,它可以觸發(fā)R運行該函數(shù)
## 5

roll # 不帶()R只會返回該函數(shù)所存儲的代碼挽拔。
## function(){
##   die <- 1:6
##   dice <- sample(die, size = 2, replace = TRUE)
##   sum(dice)
## }

1.6 參數(shù)

我們可以看到上述的function()函數(shù)并不能允許我們自己設定參數(shù)辆脸,下面我們構(gòu)建一個可以自己設定參數(shù)的函數(shù)

#將上面的第一行代碼die <- 1:6刪除,并把第二行代碼中的die隨便換個單詞例如:bones螃诅,運行后發(fā)現(xiàn)報錯啡氢,因為R的環(huán)境中沒有bones這個對象。
roll2 <- function(){
  dice <- sample(bones, size = 2, replace = TRUE)
  sum(dice)
}
## Error in sample(bones, size = 2, replace = TRUE) : 找不到對象'bones'

# 我們可以把bones放在()中术裸,這樣就成了function的一個參數(shù)了倘是,比如我們設置bones = 1:4,再次運行
roll2 <- function(bones){
  dice <- sample(bones, size = 2, replace = TRUE)
  sum(dice)
}
rolls(bones = 1:4)
## 4

# 當我們調(diào)用roll2函數(shù)但不給bones賦值的話袭艺,會再次報錯
rolls()
## Error in sample(bones, size = 2, replace = TRUE) : 
##  缺少參數(shù)"bones",也沒有缺省值

# 所以我們可以給bones設置一個初始默認值搀崭,防止這種錯誤出現(xiàn)。這樣不賦值則按默認值運行猾编,賦值則按給定的值運行瘤睹。
roll2 <- function(bones = 1:6){
  dice <- sample(bones, size = 2, replace = TRUE)
  sum(dice)
}
roll2()
## 7
roll2(bones = 1:3)
## 2

1.7 總結(jié)

我們可以在自定義函數(shù)中設置任意數(shù)量的參數(shù),只要在function()后的括號里列出它們的名字答倡,并用,隔開即可轰传。函數(shù)運行時,R會將函數(shù)主體中的每個參數(shù)名稱替換為用戶為該參數(shù)提供的值苇羡,如果沒有提供值绸吸,就會用該參數(shù)的默認值(前提是在定義函數(shù)時設置了該參數(shù)的默認值)如下:

1.jpg

R語言中有兩個最重要的組成部分:一個是對象鼻弧,用來存儲數(shù)據(jù),一個是函數(shù)锦茁,用來操作數(shù)據(jù)攘轩。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市码俩,隨后出現(xiàn)的幾起案子度帮,更是在濱河造成了極大的恐慌,老刑警劉巖稿存,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件笨篷,死亡現(xiàn)場離奇詭異,居然都是意外死亡瓣履,警方通過查閱死者的電腦和手機率翅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來袖迎,“玉大人冕臭,你說我怎么就攤上這事⊙嘧叮” “怎么了辜贵?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長归形。 經(jīng)常有香客問我托慨,道長,這世上最難降的妖魔是什么暇榴? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任厚棵,我火速辦了婚禮,結(jié)果婚禮上跺撼,老公的妹妹穿的比我還像新娘窟感。我一直安慰自己,他們只是感情好歉井,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布柿祈。 她就那樣靜靜地躺著,像睡著了一般哩至。 火紅的嫁衣襯著肌膚如雪躏嚎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天菩貌,我揣著相機與錄音卢佣,去河邊找鬼。 笑死箭阶,一個胖子當著我的面吹牛虚茶,可吹牛的內(nèi)容都是我干的戈鲁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼嘹叫,長吁一口氣:“原來是場噩夢啊……” “哼婆殿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起罩扇,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤婆芦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后喂饥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體消约,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年员帮,在試婚紗的時候發(fā)現(xiàn)自己被綠了或粮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡集侯,死狀恐怖被啼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情棠枉,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布泡挺,位于F島的核電站辈讶,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏娄猫。R本人自食惡果不足惜贱除,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望媳溺。 院中可真熱鬧月幌,春花似錦、人聲如沸悬蔽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蝎困。三九已至录语,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間禾乘,已是汗流浹背澎埠。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留始藕,地道東北人蒲稳。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓氮趋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親江耀。 傳聞我的和親對象是個殘疾皇子凭峡,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

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