R語言變量
變量為我們提供了一個存儲的名字,我們可以操作的項目。 R語言中的變量可以存儲為原子向量,組原子矢量或許多的R-對象的組合。 一個有效的變量名稱是由字母,數字和點或下劃線組成。變量名以字母開頭,或者數字後麵冇有點。
變量名 | 有效性 | 原因 |
---|---|---|
var_name2. | 有效 | 有字母,數字,點和下劃線 |
var_name% | 無效 | 有字符'%'。隻有點(.) 和下劃線都允許。 |
2var_name | 無效 | 以數字開頭 |
.var_name , var.name |
有效 | 可以先從一個點(.),但點(.)不應該跟著一個數字。 |
.2var_name | 無效 | 以點(.)開始之後是數字所以無效 |
_var_name | 無效 | 以_開始這是無效的 |
變量賦值
變量可以使用向左,向右且等於操作符來分配值。可以使用 print() 或 cat() 函數打印變量的值。cat() 函數將多個項目並成連續並打印輸出。
# Assignment using equal operator. var.1 = c(0,1,2,3) # Assignment using leftward operator. var.2 <- c("learn","R") # Assignment using rightward operator. c(TRUE,1) -> var.3 print(var.1) cat ("var.1 is ", var.1 ,"\n") cat ("var.2 is ", var.2 ,"\n") cat ("var.3 is ", var.3 ,"\n")
當我們上麵的代碼執行時,它產生以下結果:
[1] 0 1 2 3 var.1 is 0 1 2 3 var.2 is learn R var.3 is 1 1
注: 矢量c(TRUE,1)有邏輯和數值類的混合。因此,邏輯類強迫轉換到數字類,如TRUE為1。
變量的數據類型
在R,變量本身不需要聲明成任何數據類型,但它得到分配給它的是 R-對象的數據類型。所以R被稱為動態類型的語言,這意味著我們可以當在程序中使用它,並可再次並改變相同變量的變量的數據類型。
var_x <- "Hello" cat("The class of var_x is ",class(var_x),"\n") var_x <- 34.5 cat(" Now the class of var_x is ",class(var_x),"\n") var_x <- 27L cat(" Next the class of var_x becomes ",class(var_x),"\n")
當我們上麵的代碼執行時,它產生以下結果:
The class of var_x is character Now the class of var_x is numeric Next the class of var_x becomes integer
查找變量
要知道目前在工作區中的可用變量,可以使用 ls()函數列出所有變量。另外,ls() 函數可以使用模式來匹配變量名稱。
print(ls())
當上麵的代碼執行時,它產生以下結果:
[1] "my var" "my_new_var" "my_var" "var.1" [5] "var.2" "var.3" "var.name" "var_name2." [9] "var_x" "varname"
注: 示例輸出是根據變量在環境聲明來輸出顯示的。
在 ls() 函數可以使用模式匹配變量名。
# List the variables starting with the pattern "var". print(ls(pattern="var"))
當上麵的代碼執行時,它產生以下結果:
[1] "my var" "my_new_var" "my_var" "var.1" [5] "var.2" "var.3" "var.name" "var_name2." [9] "var_x" "varname"
以點(.) 開始的變量是隱藏的,它們可以使用 “all.names= TRUE” 參數給 ls()函數來列出。
print(ls(all.name=TRUE))
當上麵的代碼執行時,它產生以下結果:
[1] ".cars" ".Random.seed" ".var_name" ".varname" ".varname2" [6] "my var" "my_new_var" "my_var" "var.1" "var.2" [11]"var.3" "var.name" "var_name2." "var_x"
刪除變量
變量可以通過使用 rm()函數來刪除。下麵我們刪除變量var.3。然後再打印變量時出現異常錯誤。
rm(var.3) print(var.3)
當上麵的代碼執行時,它產生以下結果:
[1] "var.3" Error in print(var.3) : object 'var.3' not found
所有的變量可以通過使用rm()和 ls()函數來一起刪除。
rm(list=ls()) print(ls())
當上麵的代碼執行時,它產生以下結果:
character(0)