在R語言中,變量的命名方式是由必定的要求的:html
變量名 | 是否正確 | 緣由 |
---|---|---|
.dad12 | 正確 | 能夠以 . 開始 |
_dad12 | 錯誤 | 不能夠以 _ 開始 |
ad18 | 正確 | 能夠以字母開始 |
5aads | 錯誤 | 不能夠以數字開始 |
.5aads | 錯誤 | . 開始不能夠直接接數字 |
ad18% | 錯誤 | $ 是非法字符 |
總結來講就是,變量能夠包含數字,字符,點符號,能夠字符或點開頭,可是點後不能直接接數字。
app
你能夠經過 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
# 使用 <- 符號 test(a <- 6)
PS: 這些都是在函數中使用的時候存在的差別,平時在控制檯直接使用 a = 12
和 a <- 12
是等價的htm
R語言的輸出函數,使用極其簡單,只須要將須要輸出的內容做爲參數傳入函數便可:blog
> print('dsafafa') [1] "dsafafa"
上面的兩個函數都是能用於拼接輸出的,他們之間的差別主要體如今, 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
: 輸出文件的標籤,當fill
爲true
才生效
具體函數及參數: 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
,其餘的應該還有不少,後續會補充,這門語言時解釋性語言,相對來講更直白一些,能夠直接讀取表格類數據。