關卡 1

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

關卡 2

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

關卡 3

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

關卡 4

本文內容取自help.start()中的An Introduction to R。

關卡 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

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