一門新的語言學習一般是從輸出 "Hello, World!" 程式開始,R 語言的 "Hello, World!" 程式代碼如下:
myString <- "Hello, World!"
print ( myString )
以上執行個體将字元串 "Hello, World!" 指派給 myString 變量,然後使用 print() 函數輸出。
注意:R 語言指派使用的是左箭頭 <- 符号,不過一些新版本也支援等号 =。
R 語言的有效的變量名稱由字母,數字以及點号 . 或下劃線 _ 組成。
變量名稱以字母或點開頭。
變量名
是否正确
原因
var_name2.
正确
字元開頭,并由字母、數字、下劃線和點号組成
var_name%
錯誤
% 是非法字元
2var_name
不能數字開頭
.var_name,
var.name
可以 . 号開頭,但是要注意 . 号開頭後面不能跟着數字
.2var_name
. 号開頭後面不能跟着數字
_var_name
不能以下劃線 _ 開頭
最新版本的 R 語言的指派可以使用左箭頭 <-、等号 = 、右箭頭 -> 指派:
# 使用等号 = 号指派
> var.1 = c(0,1,2,3)
> print(var.1)
[1] 0 1 2 3
# 使用左箭頭 <-指派
> var.2 <- c("learn","R")
> print(var.2)
[1] "learn" "R"
# 使用右箭頭 -> 指派
> c(TRUE,1) -> var.3
> print(var.3)
[1] 1 1
檢視已定義的變量可以使用 ls() 函數:
> print(ls())
[1] "var.1" "var.2" "var.3"
删除變量可以使用 rm() 函數:
> rm(var.3)
[1] "var.1" "var.2"
>
上一章節中我們已經學會來如何安裝 R 的程式設計環境,接下來我們将為大家介紹 R 語言的互動式程式設計與檔案腳本程式設計。
我們隻需要在指令行中執行 R 指令就可以進入互動式的程式設計視窗:
執行完這個指令後會調出 R 語言的解釋器,我們在 > 符後面輸入代碼即可。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZwpmLFhTRxYUNEZkMFJENtEkNBhTLwQkQ00CM4ETOtEUMxYUO4EUQvw1Nw8CXwIDMy8CXzRWYvxGc19CX05WZ052bj1Cc39CXt92YuI2bv5Wdy5yd3d3Lc9CX6MHc0RHaiojIsJye.jpg)
互動式指令可以通過輸入 q() 來退出:
R 語言檔案字尾為 .R。
接下來我們建立一個 runoob-test.R 檔案:代碼如下:
myString <- "RUNOOB"
接下來我們在指令行視窗使用 Rscript 來執行該腳本:
輸出結果如下:
print() 是 R 語言的輸出函數。
和其他程式設計語言一樣,R 語言支援數字、字元等輸出。
輸出的語句十分簡單:
執行結果:
R 語言與 node.js 和 Python 一樣,是解釋型的語言,是以我們往往可以像使用指令行一樣使用 R 語言。
如果我們在一行上進輸入一個值,那麼 R 也會把它直接标準化輸出:
如果需要輸出結果的拼接,我們可以使用 cat() 函數:
> cat(1, "加", 1, "等于", 2, '\n')
1 加 1 等于 2
cat() 函數會在每兩個拼接元素之間自動加上空格。
R 語言輸出到檔案的方法十分多樣,而且很友善。
cat() 函數支援直接輸出結果到檔案:
這個語句不會在控制台産生結果,而是把 "RUNOOB" 輸出到 "/Users/runoob/runoob-test/r_test.txt" 檔案中去。
file 參數可以是絕對路徑或相對路徑,建議使用絕對路徑,Windows 路徑格式為 D:\\r_test.txt。
注意:這個操作是"覆寫寫入"操作,請謹慎使用,因為它會将輸出檔案的原有資料清除。如果想"追加寫入",請不要忘記設定 append 參數:
執行以上代碼後,打開 r_test.txt 檔案内容如下:
sink() 函數可以把控制台輸出的文字直接輸出到檔案中去:
這條語句執行以後,任何控制台上的輸出都會被寫入到 "/Users/runoob/runoob-test/r_test.txt" 檔案中去,控制台将不會顯示輸出。
注意:這個操作也是"覆寫寫入"操作,會直接清除原有的檔案内容。
如果我們依然像保留控制台的輸出,可以設定 split 屬性:
如果想取消輸出到檔案,可以調用無參數的 sink :
sink("r_test.txt", split=TRUE) # 控制台同樣輸出
for (i in 1:5)
print(i)
sink() # 取消輸出到檔案
sink("r_test.txt", append=TRUE) # 控制台不輸出,追加寫入檔案
print("RUNOOB")
執行以上代碼,目前目錄下會生存一個 r_test.txt 檔案,打開檔案内容如下:
控制台輸出為:
可能我們會聯想到 C 語言中的 scanf 、Java 中的 java.util.Scanner,如果你學習過 Python 可能對 input() 函數更熟悉。但是 R 語言本身作為一種解釋型的語言,更類似于一些終端腳本語言(比如 bash 或者 PowerShell),這些語言是基于指令系統的,本身就需要輸入和輸出且不适合開發面向使用者的應用程式(因為他們本身就是給最終使用者使用的)。是以 R 語言沒有專門再從控制台讀取的函數,文字輸入在 R 的使用中一直在進行。
R 語言中有豐富的檔案讀取函數,但是如果純粹的想将某個檔案中的内容讀取為字元串,可以使用 readLines 函數:
讀取結果是兩個字元串,分别是所讀取的檔案包含的兩行内容。
注意:所讀取的文本檔案每一行 (包括最後一行) 的結束必須有換行符,否則會報錯。
除了文字的簡單輸入輸出以外,R 還提供了很多輸入資料和輸出資料的方法,R 語言最友善的地方就是可以将資料結構直接儲存到檔案中去,而且支援儲存為 CSV、Excel 表格等形式,并且支援直接地讀取。這對于數學研究者來說無疑是非常友善的。但是這些功能對于 R 語言的學習影響不大,我們将在之後的章節提到。
對于檔案操作,我們需要設定檔案的路徑,R 語言可以通過以下兩個行數來擷取和設定目前的工作目錄:
getwd() : 擷取目前工作目錄
setwd() : 設定目前工作目錄
# 目前工作目錄
print(getwd())
# 設定目前工作目錄
setwd("/Users/runoob/runoob-test2")
# 檢視目前工作目錄
執行以上代碼輸出結果為: