關卡 1

這門課程的目的,是要讓大家透過互動式的內容,上手R語言。

關卡 2

這份文件的格式採用的語法和Markdown相容。先說明一些常見的Markdown語法,以幫助同學快速上手。首先,所有的程式碼,都會用`符號包覆。舉例來說,當swirl提示輸入訊息如下:sessionInfo()`,即代表各位同學要在console輸入的內容如下:sessionInfo()。

關卡 3

其次,所有的連結網址,都會用<>符號包覆。舉例來說,當顯示訊息如下:https://www.google.com,則代表請同學打開下列網址:https://www.google.com

關卡 4

本文內容取自help.start()中的AnIntroductiontoR。

關卡 5

那我們就開始吧!

關卡 6

跳過介紹R語言的部分,我們直接學習R的實際操作。在R中,可以隨時獲得某一個特定函數的細節說明。舉例來說,如果我們要查詢solve這個函數的說明,就輸入:help(solve)。另一種比較簡單的方式則是輸入:?solve

關卡 7

現在請各位同學試著查詢chol2inv的說明。

help(chol2inv)

關卡 8

在R中,每一段指令都是一個expression。舉例來說,剛剛輸入的:help(chol2inv)即是一個有效的expression。

關卡 9

help(chol2inv)則是無效的,需依照完整格式,輸入help(chol2inv)才是有效的。

關卡 10

通常給R的指令分成兩種,一個expression,或是一個assignment。

關卡 11

舉例來說,a<-1即是一個assignment的動作。請各位同學在console輸入a<-1

a <- 1

關卡 12

通常R在收到一個expression之後,它會做出以下的動作:

關卡 13

R會evaluate這個expression,然後把結果顯示到螢幕上。舉例來說,請同學輸入:a+1

a + 1

關卡 14

在收到a+1這個expression之後,R會進行計算,查到a的值是1,再和1做相加,最後會在螢幕上顯示計算結果為2。

關卡 15

現在,請各位同學讓a的值變成2。

a <- 2

關卡 16

同學是否注意到,R螢幕上並沒有顯示任何結果呢?

關卡 17

這裡測試一下同學是否理解assignment的意思。請問現在如果在R的console中輸入a-1,會螢幕上會顯示什麼結果呢?

1

關卡 18

大家對於expression和assignment有一些初步的認識了。未來我們需要藉由大量的expression和assignment,來利用R達成複雜的任務。

關卡 19

我們可以把多個expression用{}包覆起來,變成一個大的expression。

關卡 20

我們也可以在程式碼中插入註解:#。所有在#之後輸入的內容都會被R所略過。

關卡 21

如果有一個expression還沒有完成,(可能是少了)}),那R會在console的開頭用+進行提示。

關卡 22

也可以用上下鍵,快速瀏覽輸入過的expression。

關卡 23

要把指令輸入到R,除了在console上一個字一個字的打之外,也可以透過source指令,來載入一個撰寫R指令的文件,並且執行文件中的expressions。

關卡 24

請看一下source的說明。輸入之後,使用R一般界面的同學會看到跳出的說明視窗,內容是R對source的官方說明。而使用Rstudio的同學則請檢查右下角的視窗是否切換至source的官方說明。

help(source)

關卡 25

先前在各位同學安裝swirl的時候,我們可能已經用過source來執行講師預先寫好的expressions,進而幫助設定環境了。

關卡 26

剛剛也跟各位同學介紹過assignment。在R裡面,這些存放資料的東西都叫做object,如上述例子中的a。object可以是一個變數、一連串的數字、文字,甚至是函數或更複雜的東西。

關卡 27

在R中,我們可以利用objects()ls()來列出所有目前存在的object的名字。請同學輸入objects()ls()

objects()

關卡 28

我們可以刪除已經存在的物件。舉例來說,如果我們要刪除a,就只要輸入:rm(a)。請同學根據上述做法試試看。

rm(a)

關卡 29

第一章的內容就到此結束了。