Skip to content

R - 变量

变量为我们提供了命名存储空间,程序可以对其进行操作。在 R 中,变量可以存储各种对象,从单个值(如数字)到复杂的结构(如数据框或模型)。有效的变量名由字母、数字、点(.)和下划线(_)字符组成。它必须以字母或点开头,但如果以点开头,则不能紧跟数字。

变量名有效性原因与最佳实践
user_id有效推荐风格。使用 snake_case(蛇形命名法),Tidyverse 风格指南推荐此命名法。
var.name有效技术上有效,但不推荐。在 R 中,. 用于 S3 面向对象编程,可能会引起混淆。
var_name%无效包含特殊字符(%)。只允许使用字母、数字、. 和 _。
2_var_name无效不能以数字开头。
.internal_data有效可以以点开头。此类变量在默认情况下会被 ls() 命令“隐藏”。
.2_var_name无效开头的点不能紧跟着数字。

R 中主要的赋值运算符是 <-。虽然在大多数情况下 = 也可以用于赋值,但 <- 是强烈的惯例,并且推荐使用它来提高代码清晰度并避免与函数调用中设置参数产生歧义。右向运算符 -> 也存在但很少使用。

# 最佳实践:使用左向箭头 `<-` 进行赋值。
var_1 <- c(0, 1, 2, 3)
# 等号 `=` 也有效,但最好保留给函数参数。
var_2 = c("learn", "R")
# 右向箭头 `->` 有效但不常用。
c(TRUE, 1) -> var_3
# 使用 `print()` 函数进行显式输出。
print(var_1)
# `cat()` 函数用于连接并打印,`\n` 表示换行。
cat("Variable 1 is:", var_1, "\n")
cat("Variable 2 is:", var_2, "\n")
cat("Variable 3 is:", var_3, "\n")

执行上述代码会产生以下结果:

[1] 0 1 2 3
Variable 1 is: 0 1 2 3
Variable 2 is: learn R
Variable 3 is: 1 1

关于类型强制转换的说明: 向量 c(TRUE, 1) 包含一个逻辑值和一个数值。R 会将这些值强制转换为最灵活的类型,在本例中是数值。因此,TRUE 被转换为 1。

R 是一种动态类型语言。这意味着您无需提前声明变量的数据类型。变量会自动采用赋值给它的对象的数据类型,并且您可以通过重新赋值不同对象来更改其类型。

# 赋值一个字符串
my_variable <- "Hello, R!"
cat("The class of my_variable is:", class(my_variable), "\n")
# 重新赋值一个数值(双精度)
my_variable <- 34.5
cat("Now the class of my_variable is:", class(my_variable), "\n")
# 重新赋值一个整数值('L' 后缀表示整数)
my_variable <- 27L
cat("Finally, the class becomes:", class(my_variable), "\n")

执行上述代码会产生以下结果:

The class of my_variable is: character
Now the class of my_variable is: numeric
Finally, the class becomes: integer

您可以使用一些关键函数来管理当前 R 会话(全局环境)中的变量。

ls() 函数列出所有可见变量。您可以使用 pattern 参数来搜索名称,或者使用 all.names = TRUE 来显示隐藏变量(那些以点开头的变量)。

# 创建一些变量用于演示
var_a <- 1
var_b <- "text"
.hidden_var <- TRUE
# 列出所有可见变量
print(ls())
# 列出符合特定模式的变量(例如,以 'var' 开头的)
print(ls(pattern = "^var"))
# 列出所有变量,包括隐藏变量
print(ls(all.names = TRUE))

使用 rm() 函数从环境中移除一个或多个变量。要清空整个工作空间,您可以结合使用 rm() 和 ls()。

# 创建一个要删除的变量
delete_me <- "I am temporary"
print(exists("delete_me"))
# 移除变量
rm(delete_me)
print(exists("delete_me"))
# 从环境中移除所有变量:
# 这是一个强大的命令,请谨慎使用!
rm(list = ls())
print(ls())

最佳实践: 为了获得完全干净的环境,通常最好重启您的 R 会话(在 RStudio 中:Session > Restart R 或 Ctrl+Shift+F10)。这能确保已加载的包和其他环境设置也得到重置。