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")

執行上面示例代碼,得到以下結果 -

> print(var.1)
[1] 0 1 2 3
> cat ("var.1 is ", var.1 ,"\n")
var.1 is  0 1 2 3 
> cat ("var.2 is ", var.2 ,"\n")
var.2 is  learn R 
> cat ("var.3 is ", var.3 ,"\n")
var.3 is  1 1

注 - 向量c(TRUE,1)具有邏輯和數字類的混合。所以邏輯類被強制爲數字類,使TRUE1

變量的數據類型

在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")

執行上面示例代碼,得到以下結果 -

> var_x <- "Hello"
> cat("The class of var_x is ",class(var_x),"\n")
The class of var_x is  character 
>
> var_x <- 34.5
> cat("  Now the class of var_x is ",class(var_x),"\n")
  Now the class of var_x is  numeric 
>
> var_x <- 27L
> cat("   Next the class of var_x becomes ",class(var_x),"\n")
   Next the class of var_x becomes  integer 
>

查找變量

如想要知道工作區中當前可用的所有變量,可使用ls()函數。ls()函數也可以使用模式來匹配變量名。

print(ls());

執行上面示例代碼,得到以下結果 -

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

注意 - 根據您的環境中聲明的變量可能所有不同,所以您的輸出和這裏輸出結果可能不太一樣。

ls()函數可以使用模式來匹配變量名。

# List the variables starting with the pattern "var".
print(ls(pattern = "var"))

執行上面示例代碼,得到以下結果 -

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

以點(.)開頭的變量是隱藏的,它們可以使用ls()函數的「all.names = TRUE」參數列出。如下所示 -

print(ls(all.names = TRUE));

執行上面示例代碼,得到以下結果 -

> print(ls(all.names = TRUE));
[1] ".var_no" ".var1"   "string"  "var.1"   "var.2"   "var.3"   "var_x"  
>

刪除變量

可以使用rm()函數刪除變量。下面假設要刪除變量var.3。 在打印時拋出變量錯誤的值。

rm(var.3)
print(var.3)

執行上面查詢代碼,得到以下結果 -

> rm(var.3)
> print(var.3)
Error in print(var.3) : 找不到對象'var.3'

刪除所有變量可以通過使用rm()ls()函數一起來完成。

rm(list = ls())
print(ls())

執行上面示例代碼,得到以下結果 -

> rm(list = ls())
> print(ls())
character(0)