R 编程学习笔记

1. 变量与常量

在 R 中可以直接使用 <-= 赋值符号声明变量。常量可以通过 assign 函数声明。

age <- 30
name = "Alice"
assign("pi", 3.1415)

注意事项:R 中没有严格的常量机制,assign 不会锁定变量。

2. 数据类型

R 支持多种数据类型:numericcharacterlogicalfactor 类型。

height <- 1.75
is_student <- TRUE
city <- factor("New York")

易错点:转换类型时确保数据兼容,例如字符型转为数值型会导致 NA。

3. 条件语句

R 使用 ifelseelse if 语句进行条件判断。

if (age > 18) {
    print("Adult")
} else {
    print("Minor")
}

注意事项:条件语句的条件表达式需返回布尔值,字符或数值会导致错误。

4. 循环

R 中的循环包括 forwhilerepeat

for (i in 1:5) {
    print(i)
}

易错点:repeat 循环必须用 break 退出,否则会进入无限循环。

5. 函数

R 使用 function 定义函数,支持默认参数。

add <- function(a, b = 10) {
    return(a + b)
}

注意事项:返回值不一定要用 return,函数会返回最后的表达式。

6. 数据框与数据处理

R 中的数据框类似于表格数据,data.frame 函数用于创建数据框。

df <- data.frame(Name = c("Alice", "Bob"), Age = c(25, 30))

注意事项:数据框列名应保持一致以便调用,列操作时需注意使用 $ 符号。

7. 绘图

R 提供了强大的绘图功能,plot 函数用于绘制简单的散点图。

plot(df$Age, main = "Age Distribution")

注意事项:使用高级绘图功能时需安装 ggplot2 等包。

8. 包管理

使用 install.packages 安装包,library 加载包。

install.packages("ggplot2")
library(ggplot2)

易错点:安装包后需重新启动 R 环境,以确保包可以正确加载。

高级与小众用法

向量化运算

R 支持向量化运算,能在一行代码中处理整个向量或矩阵的数据。

x <- c(1, 2, 3)
y <- x * 2   # 结果为 c(2, 4, 6)

注意事项:确保向量长度一致,否则会导致非预期结果或警告。

列表操作

列表可以存储不同类型的数据,list 函数用于创建列表。

my_list <- list(name = "Alice", age = 25, scores = c(90, 85, 88))

易错点:访问嵌套列表时需指定完整的路径,使用 [[ ]] 获取元素。

数据框列的动态引用

使用 [[ ]] 方式可以动态引用列名变量,便于灵活操作。

col_name <- "Age"
df[[col_name]]

注意事项:动态引用适用于复杂数据框操作,避免使用动态引用时拼写错误。

apply 系列函数

R 中的 applysapplylapply 等用于数据操作。

apply(matrix(1:9, nrow = 3), 1, sum)

易错点:使用 apply 时需指定正确的维度参数(1 表示行,2 表示列)。

自定义运算符

可以使用 % 创建自定义运算符。

'%concat%' <- function(x, y) {
    paste(x, y, sep = "")
}
"Alice" %concat% "Bob"  # 输出 "AliceBob"

注意事项:自定义运算符需包含在 % 符号之间,避免与内置运算符冲突。

异常处理

R 中使用 tryCatch 处理异常。

result <- tryCatch({
    10 / 0
}, warning = function(w) {
    print("This is a warning")
}, error = function(e) {
    print("This is an error")
})

注意事项:使用 tryCatch 进行错误处理时,应明确区分警告和错误处理函数。