1.1 R的用戶界面
在讓計算機保存這些數字之前,你需要了解如何與計算機對話。R和RStudio正是與計算機進行對話的兩個工具。嚴格來說,RStudio是話筒,而R則是溝通所用的語言。不妨現在就打開RStudio吧,其打開方式與打開其他程序無異,雙擊程序圖標即可。打開之后,你的屏幕上應該出現類似圖1-1的窗口。

圖1-1:在控制臺面板最下面一行的提示符后鍵入R命令,計算機就會執行該命令。在鍵入命令之后,別忘記按回車鍵。如果你是第一次打開RStudio,控制臺會出現在面板的左側。你可以通過更改設置將它放在你覺得舒服的位置,更改方法是在RStudio菜單欄中依次點擊File(文件)> Preferences(偏好設置),然后進行相應的設置即可
如果你的計算機中還沒有安裝R和RStudio,或者你完全看不懂我在說些什么,請先閱讀附錄A。該附錄簡要介紹了這兩個免費工具,并且提供了下載和安裝它們的方法。
RStudio的用戶界面十分簡潔。要想運行一段R程序,只需在RStudio控制臺面板最下面一行內鍵入R代碼,然后按回車鍵即可。鍵入的代碼通常稱作命令(command),因為它會命令計算機按照指示完成任務。鍵入代碼所在的行稱作命令行(command line)。
當你在控制臺的提示符處鍵入命令并按回車鍵之后,計算機會執行該命令并顯示結果。在一段程序運行結束之后,RStudio會自動換行并顯示一個新的提示符,等待你鍵入下一個命令。比如,當你鍵入1 + 1并按回車鍵之后,RStudio將顯示如下結果。
> 1 + 1 [1] 2 >
程序的運行結果是2,但你應該已經注意到了2之前的[1]。R這樣做是在提醒你2是輸出結果的第一個值。有些命令會返回多個值,R可能需要用多行來顯示,并且用中括號內嵌數字來標示每一行的起始數值在整個返回結果中的序號。舉例來說,如果你鍵入的命令是100:130,那么R將返回31個值,因為該命令生成了100到130之間的所有整數。第二行的起始標識是[14],表示第二行的第一個數值是所有返回值中的第14個值;第三行的起始標識是[27],代表第三行的第一個數值在所有返回值中的序號為27。中括號內的數值基本可以忽略不看。
> 100:130 ? [1] 100101102103104105106107108109110111112 [14] 113114115116117118119120121122123124125 [27] 126127128129130
? 命令行中的冒號運算符(:)表示返回兩個整數值之間的所有整數,它是生成一個數字序列的快捷方法。
R不是一種語言嗎?
你可能覺得我稱呼R的方式更像是在稱呼一個人,比如我會說“讓R做這件事”或者“讓R做那件事”。當然,R并不能真正去做這些事,它只是一種語言而已。剛才的說法只是一種簡化的命令描述,其完整的說法應該是:“在RStudio控制臺中利用R語言編寫一個命令,并讓計算機執行該命令。”真正去執行這個任務的是計算機,而不是R。
這樣的簡化描述會讓人感覺頗為困惑并顯得我們有點懶惰?沒錯!但是,是否很多人都這樣描述?據我所知,基本上所有人都這樣描述R,因為這樣省了很多麻煩。
何時編譯?
在某些編程語言中,比如C、Java和Fortran,要想讓程序運行,你需要將你編寫的人類易讀程序編譯為機器可以理解的語言(大多數都是由1和0構成的)。如果你用過這樣的語言編程,那么此時你可能會有這樣的疑問:我需要將編寫的R代碼編譯之后再運行嗎?答案是:不需要。R是一種動態編程語言,這就意味著在你運行R代碼時,編譯操作會由R自動完成。
如果你鍵入一段不完整的命令并按回車鍵,R就會顯示一個+提示符,代表R在等待你鍵入接下來的命令。你可以選擇鍵入剩下的命令或者按Esc鍵重新鍵入。
> 5- + + 1 [1] 4
如果你鍵入了一段R不能識別的命令,R會返回報錯信息。當R報錯時,你大可不必驚慌,因為它只是在告訴你計算機無法理解或執行你所鍵入的命令。你可以在下一個提示符之后嘗試鍵入一段不同的命令,如下所示。
>3 % 5 Error: unexpected input in "3 % 5" >
當你熟悉了R的命令行之后,會發現它是一個十分好用的計算器。比如說,你可以用命令行執行基本的算術運算。
2 * 3 ## 6 4-1 ## 3 6 / (4-1) ## 2
注意到上方代碼有何不尋常之處了嗎?我省去了>和[1]這樣的符號,這樣就方便大家將這些代碼復制粘貼到自己的R控制臺中,直接運行。
在R語言中,字符#是比較特別的。如果某一行以#開頭,那么該行之后的所有內容都不會被當作R命令運行。也就是說,我們可以在#后面加入與程序相關的注釋和注解。計算機在執行R代碼時會忽視這些以#開頭的命令行,但是它們有助于提高程序本身的可讀性。在R中,#被稱作注釋符號(commenting symbol)。
在本書接下來的部分,我會使用#標記R的輸出結果。一個#代表我添加的程序注釋,兩個#代表其后是程序的執行結果。我會盡量避免本書的程序結果中出現>提示符和類似
[1]這樣的行標記,除非我希望你看到它們。
取消命令
一些R程序可能需要很長時間才能運行完畢。如果想臨時中止程序的運行,可以鍵入ctrl + c。但需要注意的是,很可能中止操作也需要花很長的時間。
練習
剛剛展示的就是RStudio中運行R程序的基本界面。想必你已經基本了解了它的操作方式。可以用下面的簡單練習檢驗一下自己是否真的掌握了這個基本界面。如果下面的每一步都運行無誤的話,最后得到的結果應該跟你最先輸入的數字一模一樣。
(1)隨意選一個數字,并加2。
(2)再乘以3。
(3)再減去6。
(4)最后再除以3。
在本書中,所有的練習題都會被放在如上所示的方框中。針對每一個練習,隨后都會給出答案。下面就是上題的答案。
假設你選擇的數字是10,那么每一步的結果應該如下所示。
10 + 2 ## 12 12 * 3 ## 36 36-6 ## 30 30 / 3 ## 10
現在你已經知道如何使用R的基本界面了,接下來讓我們一起做一個虛擬的骰子。之前提到過的:運算符可以方便地用來生成從1到6的一組整數。:運算符的返回值是一個向量,也就是一個一維數組。
1:6 ## 1 2 3 4 5 6
這六個數就是一個骰子所包含的全部信息了!但是工作還沒有完成,因為運行1:6只是生成了一串我們可以看到的數字而已,并沒有把這串數字保存到計算機內存里。我們現在看到的六個數字其實相當于它們在顯示屏上留下的腳印,它們曾短暫存在過。如果你想多次使用這六個數字,就需要讓計算機把它們保存起來。這樣的保存操作在R中叫作創建一個R對象(object)。
- Python量化投資指南:基礎、數據與實戰
- Python高級編程
- GitLab Repository Management
- QGIS By Example
- Python圖形化編程(微課版)
- Access 2010中文版項目教程
- Learning Nessus for Penetration Testing
- Web Developer's Reference Guide
- Java多線程并發體系實戰(微課視頻版)
- Design Patterns and Best Practices in Java
- Raspberry Pi Robotic Projects
- JavaScript語法簡明手冊
- Mastering JavaScript Promises
- SAP HANA Starter
- C++面向對象程序設計教程