關卡 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
第一章的內容就到此結束了。