天天看點

R 語言基礎

一門新的語言學習一般是從輸出 "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 語言的解釋器,我們在 > 符後面輸入代碼即可。

R 語言基礎

互動式指令可以通過輸入 q() 來退出:

R 語言基礎

R 語言檔案字尾為 .R。

接下來我們建立一個 runoob-test.R 檔案:代碼如下:

myString <- "RUNOOB"

接下來我們在指令行視窗使用 Rscript 來執行該腳本:

輸出結果如下:

R 語言基礎

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")

# 檢視目前工作目錄

執行以上代碼輸出結果為: