R 語言學習筆記 1

基礎語法

變量

在R語言中,變量的命名方式是由必定的要求的:html

變量名 是否正確 緣由
.dad12 正確 能夠以 . 開始
_dad12 錯誤 不能夠以 _ 開始
ad18 正確 能夠以字母開始
5aads 錯誤 不能夠以數字開始
.5aads 錯誤 . 開始不能夠直接接數字
ad18% 錯誤 $ 是非法字符

總結來講就是,變量能夠包含數字,字符,點符號,能夠字符或點開頭,可是點後不能直接接數字。
image.pngapp

你能夠經過 print(ls()) 來查看你的全部變量:函數

> print(ls())
[1] "a"     "ad18"  "adsaw" "test"  "tt"

還能夠經過 rm() 來刪除變量:post

> print(ls())
[1] "a"     "adsaw" "test"  "tt"

賦值語法

賦值語句: str <- "Hello World" ,前面的語句是將右側的字符串賦值給變量 str ,其實在R語言中,=<-<<- 均可以起到賦值的做用,然而他們在許多狀況下的做用是徹底不同的,具體表現有幾種(參考文獻:你被R語言的=和<-搞昏了頭嗎):spa

PS: 最新的R包裏面還支持 -> , ->> 做爲賦值符號,如:test(2) -> tt ,這是合法的3d

第一種:<- 生成匿名函數變量

# 假若有一個函數,接受4個參數做爲變量進行數據處理
test <- function(data, key, value, bool){
  a = cat('data:',data,'key:',key) # 輸出一個拼接後的字符串
  c <- paste('value:',value,'bool:',bool) # 輸出一個拼接後的字符串
  g <- paste(a,c)
  print(g)
}

# 接着我要調用這個函數(順序=)
test(data='testdata', key='testkey', value='testValue', bool=TRUE) 
# 返回一個拼接後的字符串,能夠看到如今是一一對應的
# [1] "data: testdata key: testkey value: testValue bool: TRUE"

# 接着我要調用這個函數(亂序=)
test(key='testkey', data='testdata', bool=TRUE, value='testValue')
# 返回一個拼接後的字符串,能夠看到如今仍是一一對應的
# [1] "data: testdata key: testkey value: testValue bool: TRUE"

# 接着我要調用這個函數(亂序<-)
test(key<-'testkey', data<-'testdata', bool=TRUE, value='testValue')
# 返回一個拼接後的字符串,能夠看到後買你等號的並滅有被影響,
# 而使用<-符號的最終倒是按照函數定義的順序賦值,
# 和咱們想象中的不一致
# [1] "data: testkey key: testdata value: testValue bool: TRUE"

第二種:<- 生成變量

此外,和 = 差別一點的就是, a = 12 表達的僅僅是傳值語句,並不會在空間中保留變量,而 a <- 12 是一個表達式,這在一些其餘語法中就像是 var a = 12 ,以一個簡單的例子來講明:code

#  定義一個簡單的輸出函數,默認參數等於12
test <- function(a=12){
    print(a)
}
# 當咱們嘗試調用函數的時候
# 使用 = 號
test(a = 6)
# [1] 6

image.png

# 使用 <- 符號
test(a <- 6)

image.png

PS: 這些都是在函數中使用的時候存在的差別,平時在控制檯直接使用 a = 12 a <- 12 是等價的htm

輸出函數(經常使用)

print

R語言的輸出函數,使用極其簡單,只須要將須要輸出的內容做爲參數傳入函數便可:blog

> print('dsafafa')
[1] "dsafafa"

cat 和 paste

上面的兩個函數都是能用於拼接輸出的,他們之間的差別主要體如今, cat 函數只是單純的拼接而後輸出,而 paste 則是在輸出的同時,還能將拼接後的數據以新變量保存。ip

> str1 = cat(1:9,c("st","nd","rd",rep("th",6)),"n",sep = '/')
1/2/3/4/5/6/7/8/9/st/nd/rd/th/th/th/th/th/th/n
> str1 #以cat拼接的該變量的值爲空0
NULL
> str2 = paste(1:9,c("st","nd","rd",rep("th",6)),sep = '',collapse='\n')
> str2
[1] "1st\n2nd\n3rd\n4th\n5th\n6th\n7th\n8th\n9th"

此外,函數內的參數表明的意義,共有參數

sep:拼接中間的分割符,默認爲空格

paste 私有參數:

collapse:拼接結束的符號,默認爲空格

cat 私有參數:

file:文件或連接的名稱,有值時輸出到文件中,沒有則輸出到打印臺;
append:爲 true 時將數據新增到文件末尾, false 時覆蓋文件原始內容,當且僅當參數file是文件名而非連接時,此參數纔有效;
fill:是否填充(具體細節還要考慮),當爲 false 時默認 \n換行輸出
labels: 輸出文件的標籤,當 filltrue 才生效

sink

具體函數及參數: sink(file = NULL, append = FALSE, type = c("output", "message"), split = FALSE),默認狀況下,若是文件已經存在,則它的內容將被覆蓋。

file:須要輸出的文件名
append:設爲 true 時追加到文件中,反之則覆蓋原文件
type:輸出的類型,經常使用的輸出到文件類型爲 output, message 類型則是輸出警告,中止等 stderr()
split:設爲 true 能夠保留控制檯輸出

其餘的都好理解,其中 message 類型的數據例子以下:

## 首先定義一個可寫的文件
zz <- file("C:/Users/Tutu/Desktop/testR/all.Rout", open = "wt")
## 調用sink函數設置類型爲message
sink(zz, type = "message")
## 使用try 函數檢測log函數
try(log("a"))
##隨後在以前新建的文件中能夠看到 :
## Error in log("a") : 數學函數中用了非數值參數

其餘的輸出方法

## PDF文件
pdf("filename.pdf")    
## Windows圖元文件
win.metafile("filename.wmf")
## PBG文件
png("filename.png")    
## JPEG文件
jpeg("filename.jpg")
## BMP文件
bmp("filename.bmp")    
## PostScript文件
postscript("filename.ps")

輸入函數

暫時獲取到的時 readLines ,其餘的應該還有不少,後續會補充,這門語言時解釋性語言,相對來講更直白一些,能夠直接讀取表格類數據。

相關文章
相關標籤/搜索