變量為我們提供了我們的程序可以操作的命名存儲(chǔ)。 R語(yǔ)言中的變量可以存儲(chǔ)原子向量,原子向量組或許多Robject的組合。 有效的變量名稱由字母,數(shù)字和點(diǎn)或下劃線字符組成。 變量名以字母或不以數(shù)字后跟的點(diǎn)開(kāi)頭。
變量名 | 合法性 | 原因 |
---|---|---|
var_name2. | 有效 | 有字母,數(shù)字,點(diǎn)和下劃線 |
VAR_NAME% | 無(wú)效 | 有字符'%'。只有點(diǎn)(.)和下劃線允許的。 |
2var_name | 無(wú)效 | 以數(shù)字開(kāi)頭 |
.var_name, var.name | 有效 | 可以用一個(gè)點(diǎn)(.),但啟動(dòng)點(diǎn)(.),不應(yīng)該后跟一個(gè)數(shù)字。 |
.2var_name | 無(wú)效 | 起始點(diǎn)后面是數(shù)字使其無(wú)效。 |
_var_name | 無(wú)效 | 開(kāi)頭_這是無(wú)效的 |
可以使用向左,向右和等于運(yùn)算符來(lái)為變量分配值。 可以使用print()或cat()函數(shù)打印變量的值。 cat()函數(shù)將多個(gè)項(xiàng)目組合成連續(xù)打印輸出。
# 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 ," ") cat ("var.2 is ", var.2 ," ") cat ("var.3 is ", var.3 ," ")
當(dāng)我們執(zhí)行上面的代碼,它產(chǎn)生以下結(jié)果 -
[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)具有邏輯和數(shù)值類的混合。 因此,邏輯類強(qiáng)制轉(zhuǎn)換為數(shù)字類,使TRUE為1。
在R語(yǔ)言中,變量本身沒(méi)有聲明任何數(shù)據(jù)類型,而是獲取分配給它的R - 對(duì)象的數(shù)據(jù)類型。 所以R稱為動(dòng)態(tài)類型語(yǔ)言,這意味著我們可以在程序中使用同一個(gè)變量時(shí),一次又一次地更改變量的數(shù)據(jù)類型。
var_x <- "Hello" cat("The class of var_x is ",class(var_x)," ") var_x <- 34.5 cat(" Now the class of var_x is ",class(var_x)," ") var_x <- 27L cat(" Next the class of var_x becomes ",class(var_x)," ")
當(dāng)我們執(zhí)行上面的代碼,它產(chǎn)生以下結(jié)果 -
The class of var_x is character Now the class of var_x is numeric Next the class of var_x becomes integer
要知道工作空間中當(dāng)前可用的所有變量,我們使用ls()函數(shù)。 ls()函數(shù)也可以使用模式來(lái)匹配變量名。
print(ls())
當(dāng)我們執(zhí)行上面的代碼,它產(chǎn)生以下結(jié)果 -
[1] "my var" "my_new_var" "my_var" "var.1" [5] "var.2" "var.3" "var.name" "var_name2." [9] "var_x" "varname"
注意 - 它是一個(gè)示例輸出,取決于在您的環(huán)境中聲明的變量。
ls()函數(shù)可以使用模式來(lái)匹配變量名。
# List the variables starting with the pattern "var". print(ls(pattern = "var"))
當(dāng)我們執(zhí)行上面的代碼,它產(chǎn)生以下結(jié)果 -
[1] "my var" "my_new_var" "my_var" "var.1" [5] "var.2" "var.3" "var.name" "var_name2." [9] "var_x" "varname"
以點(diǎn)(.)開(kāi)頭的變量被隱藏,它們可以使用ls()函數(shù)的“all.names = TRUE”參數(shù)列出。
print(ls(all.name = TRUE))
當(dāng)我們執(zhí)行上面的代碼,它產(chǎn)生以下結(jié)果 -
[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()函數(shù)刪除變量。 下面我們刪除變量var.3。 打印時(shí),拋出變量錯(cuò)誤的值。
rm(var.3) print(var.3)
當(dāng)我們執(zhí)行上面的代碼,它產(chǎn)生以下結(jié)果 -
[1] "var.3" Error in print(var.3) : object 'var.3' not found
所有的變量可以通過(guò)使用rm()和ls()函數(shù)一起刪除。
rm(list = ls()) print(ls())
當(dāng)我們執(zhí)行上面的代碼,它產(chǎn)生以下結(jié)果 -
character(0)
更多建議: