R语言是一门非常强大的统计计算和图形化的编程语言。它被广泛用于数据分析、机器学习、科学研究、金融分析等领域。

下面我将为你提供一个全面的R语言介绍,从基础到进阶。

1. R语言的核心特点

  • 开源免费:任何人都可以免费使用和修改。
  • 强大的统计和绘图能力:内置了大量统计函数和极其强大的绘图系统(如基础绘图、ggplot2)。
  • 活跃的社区:拥有一个非常庞大的用户和开发者社区,你遇到的大部分问题都能在网上找到答案。
  • 丰富的扩展包:通过CRAN、Bioconductor、GitHub等平台,有超过18,000个扩展包,覆盖了几乎所有能想到的统计和数据分析技术。
  • 向量化操作:可以对整个向量或矩阵进行运算,无需编写循环,代码简洁高效。
  • 数据处理能力强:拥有如 dplyr, data.table 等高效的数据处理包。

2. 安装与环境

  1. 安装R:从 The Comprehensive R Archive Network (CRAN) 下载并安装。
  2. 安装RStudio(强烈推荐):RStudio是一个功能强大的集成开发环境(IDE),它让使用R变得更加轻松。从 RStudio官网 下载桌面版。

RStudio的界面通常包含四个主要窗格:

  • 源代码编辑器:编写和保存脚本。
  • 控制台:执行代码并查看输出。
  • 环境/历史:显示当前工作空间中的变量和命令历史。
  • 文件/图/包/帮助:管理文件、查看图形、安装包和查阅文档。

3. 基础语法和操作

让我们通过一些基本代码来感受R。

基本计算

R可以作为一个强大的计算器使用。

# 这是注释
1 + 1
5 * 2
sqrt(25) # 平方根
log(10)  # 自然对数
变量赋值

使用 <-= 进行赋值,但 <- 是更传统的R风格。

x <- 10
y <- 20
name = "Hello, R!"
数据类型和数据结构
  1. 向量:最基本的一维数据结构,所有元素必须是同一类型。
    # 创建向量
    num_vec <- c(1, 2, 3, 4, 5)
    char_vec <- c("apple", "banana", "orange")
    logical_vec <- c(TRUE, FALSE, TRUE)
    
    # 向量运算
    num_vec * 2
    num_vec + c(1, 1, 1, 1, 1)
    
  2. 数据框:最常用的数据结构,类似于Excel表格,每一列是一个向量(等长),但列与列之间的类型可以不同。
    # 创建数据框
    df <- data.frame(
      name = c("Alice", "Bob", "Charlie"),
      age = c(25, 30, 35),
      score = c(85.5, 92.0, 79.5)
    )
    
    # 查看数据框
    View(df)     # 在新标签页中打开查看
    head(df)     # 查看前几行
    str(df)      # 查看结构
    summary(df)  # 查看摘要统计信息
    
    # 访问数据
    df$name      # 访问‘name’列
    df[1, ]      # 访问第一行
    df[ , 2]     # 访问第二列
    df[2, 3]     # 访问第二行第三列的元素
    
  3. 列表:可以包含不同类型、不同长度对象的复杂数据结构。
    my_list <- list(
      a = 1:5,
      b = "a string",
      c = data.frame(x = 1:3, y = 4:6)
    )
    # 访问列表元素
    my_list$a
    my_list[[1]]
    

4. 数据处理(使用 dplyr 包)

dplyr 是R语言中最受欢迎的数据处理包,它提供了一套清晰、一致的“动词”来处理数据。

首先需要安装并加载包:install.packages("dplyr") -> library(dplyr)

# 使用内置数据集 mtcars
data(mtcars)

# 1. filter(): 按条件筛选行
fast_cars <- filter(mtcars, hp > 200)

# 2. select(): 选择特定的列
car_info <- select(mtcars, mpg, cyl, hp)

# 3. mutate(): 创建新的列
mtcars <- mutate(mtcars, km_per_l = mpg * 0.425)

# 4. arrange(): 按列排序
mtcars_sorted <- arrange(mtcars, desc(mpg)) # 按mpg降序排列

# 5. summarise(): 汇总数据
summary_stats <- summarise(mtcars,
                           avg_mpg = mean(mpg),
                           max_hp = max(hp))

# 使用管道操作符 %>% (或 |> in R 4.1+)
# 管道可以将前一个操作的结果传递给后一个操作,使代码更易读。

result <- mtcars %>%
  filter(cyl == 6) %>%        # 筛选6缸车
  select(mpg, hp, wt) %>%     # 选择这三列
  mutate(ratio = hp / wt) %>% # 计算功率重量比
  arrange(desc(ratio))        # 按比率降序排列

print(result)

5. 数据可视化(使用 ggplot2 包)

ggplot2 是R语言中最强大、最优雅的绘图系统,基于“图形语法”理论。

安装并加载:install.packages("ggplot2") -> library(ggplot2)

# 使用 diamonds 数据集
data(diamonds)

# 散点图:carat 和 price 的关系
ggplot(diamonds, aes(x = carat, y = price)) +
  geom_point(alpha = 0.3, color = "blue") + # 透明度为0.3的蓝色点
  labs(title = "Diamond Price vs. Carat",
       x = "Carat",
       y = "Price (USD)")

# 分面直方图:按 cut 查看 price 的分布
ggplot(diamonds, aes(x = price, fill = cut)) +
  geom_histogram(binwidth = 500) +
  facet_wrap(~cut) + # 按 cut 分面
  theme_minimal()

# 箱线图:按 color 查看 depth 的分布
ggplot(diamonds, aes(x = color, y = depth)) +
  geom_boxplot() +
  labs(title = "Diamond Depth by Color")

6. 获取帮助

在R中,你可以很方便地获取帮助。

?mean          # 查看 mean 函数的帮助文档
??"regression" # 搜索包含“regression”的主题
help(package = "dplyr") # 查看dplyr包的所有文档

学习路径建议

  1. 基础:掌握变量、数据类型(向量、数据框)、基本运算和函数。
  2. 数据导入:学习如何从CSV、Excel等文件导入数据(推荐使用 readrreadxl 包)。
  3. 数据清洗与整理:精通 dplyrtidyr 包,这是数据分析工作的核心。
  4. 数据可视化:深入学习 ggplot2,这是R语言的王牌功能之一。
  5. 统计建模:学习线性回归、方差分析、广义线性模型等。
  6. 报告生成:学习 R Markdown,可以将你的代码、结果、图表和文字叙述整合成一个漂亮的HTML、PDF或Word报告。

R语言的学习曲线前期可能有些陡峭,但一旦掌握了它的核心思想,你会发现它在数据科学领域是无可替代的利器。祝你学习愉快!

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐