亚洲区国产区激情区无码区,国产成人mv视频在线观看,国产A毛片AAAAAA,亚洲精品国产首次亮相在线

R 基礎(chǔ)語法

一門新的語言學(xué)習(xí)一般是從輸出 "Hello, World!" 程序開始,R 語言的 "Hello, World!" 程序代碼如下:

myString <- "Hello, World!"

print ( myString )

以上示例將字符串 "Hello, World!" 賦值給 myString 變量,然后使用 print() 函數(shù)輸出。

注意:R 語言賦值使用的是左箭頭 <- 符號,不過一些新版本也支持等號 =。

變量

R 語言的有效的變量名稱由字母,數(shù)字以及點號 . 或下劃線 _ 組成。

變量名稱以字母或點開頭。

變量名是否正確原因
var_name2.正確字符開頭,并由字母、數(shù)字、下劃線和點號組成
var_name%錯誤% 是非法字符
2var_name錯誤不能數(shù)字開頭

.var_name,

var.name

正確可以 . 號開頭,但是要注意 . 號開頭后面不能跟著數(shù)字
.2var_name錯誤. 號開頭后面不能跟著數(shù)字
_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() 函數(shù):

> print(ls())
[1] "var.1" "var.2" "var.3"

刪除變量可以使用 rm() 函數(shù):

> rm(var.3)
> print(ls())
[1] "var.1" "var.2"
>

上一章節(jié)中我們已經(jīng)學(xué)會來如何安裝 R 的編程環(huán)境,接下來我們將為大家介紹 R 語言的交互式編程與文件腳本編程。

交互式編程

我們只需要在命令行中執(zhí)行 R 命令就可以進(jìn)入交互式的編程窗口:

R

執(zhí)行完這個命令后會調(diào)出 R 語言的解釋器,我們在 > 符后面輸入代碼即可。

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

> q()
Save workspace image? [y/n/c]: y

文件腳本

R 語言文件后綴為 .R。

接下來我們創(chuàng)建一個 nhooo-test.R  文件:代碼如下:

nhooo-test.R  文件

myString <- "nhooo"
print ( myString )

接下來我們在命令行窗口使用 Rscript 來執(zhí)行該腳本:

Rscript nhooo-test.R

輸出結(jié)果如下:

[1] "nhooo"

輸入輸出

print() 輸出

print() 是 R 語言的輸出函數(shù)。

和其他編程語言一樣,R 語言支持?jǐn)?shù)字、字符等輸出。

輸出的語句十分簡單:

print("nhooo")
print(123)
print(3e2)

執(zhí)行結(jié)果:

[1] "nhooo"
[1] 123
[1] 300

R 語言與 node.js 和 Python 一樣,是解釋型的語言,所以我們往往可以像使用命令行一樣使用 R 語言。

如果我們在一行上進(jìn)輸入一個值,那么 R 也會把它直接標(biāo)準(zhǔn)化輸出:

> 5e-2
[1] 0.05

cat() 函數(shù)

如果需要輸出結(jié)果的拼接,我們可以使用 cat() 函數(shù):

> cat(1, "加", 1, "等于", 2, '\n')
1 加 1 等于 2

cat() 函數(shù)會在每兩個拼接元素之間自動加上空格。

輸出內(nèi)容到文件

R 語言輸出到文件的方法十分多樣,而且很方便。

cat() 函數(shù)支持直接輸出結(jié)果到文件:

cat("nhooo", file="/Users/nhooo/nhooo-test/r_test.txt")

這個語句不會在控制臺產(chǎn)生結(jié)果,而是把 "nhooo" 輸出到 "/Users/nhooo/nhooo-test/r_test.txt" 文件中去。

file 參數(shù)可以是絕對路徑或相對路徑,建議使用絕對路徑,Windows 路徑格式為 D:\\r_test.txt。

cat("nhooo", file="D:\\r_test.txt")

注意:這個操作是"覆蓋寫入"操作,請謹(jǐn)慎使用,因為它會將輸出文件的原有數(shù)據(jù)清除。如果想"追加寫入",請不要忘記設(shè)置 append 參數(shù):

cat("GOOGLE", file="/Users/nhooo/nhooo-test/r_test.txt", append=TRUE)

執(zhí)行以上代碼后,打開 r_test.txt 文件內(nèi)容如下:

nhoooGOOGLE

sink()

sink() 函數(shù)可以把控制臺輸出的文字直接輸出到文件中去:

sink("/Users/nhooo/nhooo-test/r_test.txt")

這條語句執(zhí)行以后,任何控制臺上的輸出都會被寫入到 "/Users/nhooo/nhooo-test/r_test.txt" 文件中去,控制臺將不會顯示輸出。

注意:這個操作也是"覆蓋寫入"操作,會直接清除原有的文件內(nèi)容。

如果我們依然像保留控制臺的輸出,可以設(shè)置 split 屬性:

sink("/Users/nhooo/nhooo-test/r_test.txt", split=TRUE)

如果想取消輸出到文件,可以調(diào)用無參數(shù)的 sink :

sink()
sink("r_test.txt", split=TRUE)  # 控制臺同樣輸出
for (i in 1:5) 
    print(i)
sink()   # 取消輸出到文件

sink("r_test.txt", append=TRUE) # 控制臺不輸出,追加寫入文件
print("nhooo")

執(zhí)行以上代碼,當(dāng)前目錄下會生存一個 r_test.txt 文件,打開文件內(nèi)容如下:

[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] "nhooo"

控制臺輸出為:

[1] 1
[1] 2
[1] 3
[1] 4
[1] 5

文字輸入

可能我們會聯(lián)想到 C 語言中的 scanf 、Java 中的 java.util.Scanner,如果你學(xué)習(xí)過 Python 可能對 input() 函數(shù)更熟悉。但是 R 語言本身作為一種解釋型的語言,更類似于一些終端腳本語言(比如 bash 或者 PowerShell),這些語言是基于命令系統(tǒng)的,本身就需要輸入和輸出且不適合開發(fā)面向用戶的應(yīng)用程序(因為他們本身就是給最終用戶使用的)。因此 R 語言沒有專門再從控制臺讀取的函數(shù),文字輸入在 R 的使用中一直在進(jìn)行。

從文件讀入文字

R 語言中有豐富的文件讀取函數(shù),但是如果純粹的想將某個文件中的內(nèi)容讀取為字符串,可以使用 readLines 函數(shù):

readLines("/Users/nhooo/nhooo-test/r_test.txt")

執(zhí)行結(jié)果:

[1] "nhoooGOOGLE"

讀取結(jié)果是兩個字符串,分別是所讀取的文件包含的兩行內(nèi)容。

注意:所讀取的文本文件每一行 (包括最后一行) 的結(jié)束必須有換行符,否則會報錯。

其他方式

除了文字的簡單輸入輸出以外,R 還提供了很多輸入數(shù)據(jù)和輸出數(shù)據(jù)的方法,R 語言最方便的地方就是可以將數(shù)據(jù)結(jié)構(gòu)直接保存到文件中去,而且支持保存為 CSV、Excel 表格等形式,并且支持直接地讀取。這對于數(shù)學(xué)研究者來說無疑是非常方便的。但是這些功能對于 R 語言的學(xué)習(xí)影響不大,我們將在之后的章節(jié)提到。

工作目錄

對于文件操作,我們需要設(shè)置文件的路徑,R 語言可以通過以下兩個行數(shù)來獲取和設(shè)置當(dāng)前的工作目錄:

  • getwd() : 獲取當(dāng)前工作目錄

  • setwd() : 設(shè)置當(dāng)前工作目錄

# 當(dāng)前工作目錄
print(getwd())

# 設(shè)置當(dāng)前工作目錄
setwd("/Users/nhooo/nhooo-test2")

# 查看當(dāng)前工作目錄
print(getwd())

執(zhí)行以上代碼輸出結(jié)果為:

[1] "/Users/nhooo/nhooo-test"
[1] "/Users/tianqixin/nhooo-test2"