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)

上一篇: R語言數據類型 下一篇: R語言基礎語法