R 语言教程学习笔记

简介

R语言是一种流行的开源编程语言,用于数据分析、可视化和统计建模。它具有简单易学、可扩展性强和灵活性高等优点,因此在学术界和工业界都得到了广泛的应用。

本笔记将介绍R语言的基本语法和关键概念,以及如何使用R进行数据处理和可视化。我们还将提供一些实际案例,帮助读者更好地理解和应用R语言。

安装和配置

首先,您需要安装R语言和集成开发环境(IDE)RStudio。可以从官方网站下载RRStudio

安装完成之后,您需要配置RStudio中的设置和插件,以便更好地使用R。

基本语法

R语言的基本语法与其他编程语言非常相似。以下是一些基本概念:

变量和数据类型

在R中,您可以使用赋值运算符'='或'<-'来创建变量。例如,以下代码创建一个名为x的变量,并将其设置为整数值1:

Copy Code
x <- 1

R语言支持多种数据类型,包括数字、字符、逻辑、因子等。您可以使用函数typeof()或class()来查看变量的数据类型。例如,以下代码创建一个名为y的变量,并将其设置为字符串值"hello":

Copy Code
y <- "hello" typeof(y) # 输出 "character"

数据结构

R语言支持多种数据结构,包括向量、矩阵、数组、列表和数据框。以下是一些基本概念:

  • 向量:用于存储一组相同数据类型的元素。以下代码创建一个名为a的向量,并将其设置为数字1到5:
Copy Code
a <- c(1, 2, 3, 4, 5)
  • 矩阵:用于存储二维表格数据。以下代码创建一个名为b的矩阵,并将其设置为3行2列的矩阵:
Copy Code
b <- matrix(c(1, 2, 3, 4, 5, 6), nrow=3, ncol=2)
  • 数组:用于存储多维数组数据。以下代码创建一个名为c的数组,并将其设置为3行2列2层的数组:
Copy Code
c <- array(c(1:12), dim=c(3, 2, 2))
  • 列表:用于存储不同数据类型的元素。以下代码创建一个名为d的列表:
Copy Code
d <- list(name="Bob", age=25, married=TRUE)
  • 数据框:用于存储二维表格数据,每列可以具有不同的数据类型。以下代码创建一个名为e的数据框,并将其设置为姓名、年龄和已婚状态列:
Copy Code
e <- data.frame(name=c("Bob", "Alice", "John"), age=c(25, 30, 35), married=c(TRUE, FALSE, TRUE))

控制流

R语言支持多种控制流语句,包括if-else、for、while和repeat等。以下是一些基本概念:

  • if-else:用于根据条件执行不同的语句。以下代码根据变量x的值输出不同的结果:
Copy Code
if (x > 0) { print("x is positive") } else if (x < 0) { print("x is negative") } else { print("x is zero") }
  • for:用于循环一定次数执行相同的语句。以下代码循环变量i从1到5,并输出变量i的值:
Copy Code
for (i in 1:5) { print(i) }
  • while:用于根据条件循环执行相同的语句。以下代码循环变量j从1开始,直到变量j的值大于10并输出变量j的值:
Copy Code
j <- 1 while (j <= 10) { print(j) j <- j + 1 }

函数

函数是R语言中的核心概念之一。您可以使用函数来实现特定的任务,并可以自己编写函数来扩展R语言的功能。以下是一个示例:

Copy Code
# 计算两个数的和 add <- function(a, b) { return (a + b) } result <- add(3, 4) print(result) # 输出 7

数据处理和可视化

R语言提供了各种包和函数,用于数据处理和可视化。以下是一些常用的包和函数:

数据处理

  • dplyr包:用于数据清洗和转换。以下代码使用dplyr包中的filter()函数来选择数据框e中年龄大于30的记录:
Copy Code
library(dplyr) result <- e %>% filter(age > 30) print(result)
  • tidyr包:用于数据重塑和整理。以下代码使用tidyr包中的pivot_longer()函数来将宽格式转换为长格式:
Copy Code
library(tidyr) result <- data.frame(x=c(1, 2), y=c(3, 4)) result_long <- result %>% pivot_longer(cols=c('x', 'y'), names_to='var', values_to='val') print(result_long)

可视化

  • ggplot2包:用于绘制高质量的图形。以下代码使用ggplot2包中的geom_bar()函数来绘制柱状图:
Copy Code
library(ggplot2) data <- data.frame(name=c("Bob", "Alice", "John"), score=c(80, 90, 85)) ggplot(data, aes(x=name, y=score)) + geom_bar(stat="identity")
  • plotly包:用于绘制交互式图形。以下代码使用plotly包中的plot_ly()函数来绘制散点图:
Copy Code
library(plotly) data <- data.frame(x=c(1, 2, 3), y=c(4, 5, 6)) plot_ly(data, x=~x, y=~y, type="scatter", mode="markers")

实例

以下是一个实际案例,演示如何使用R语言进行数据处理和可视化。

分析停车位使用情况

假设您是一家餐馆的经理,希望了解餐馆停车场的使用情况,以便优化餐馆运营。您有一个CSV文件,其中包含每个小时的停车位使用情况。您想要计算出每天各时段停车位的平均使用率,并绘制可视化图表。

以下是R语言代码示例:

Copy Code
# 导入数据 parking <- read.csv("parking.csv") # 转换数据结构 parking_long <- parking %>% pivot_longer(cols=2:25, names_to='hour', values_to='utilization') # 计算平均使用率 parking_long <- parking_long %>% group_by(date, hour) %>% summarize(mean(utilization)) # 绘制可视化图表 ggplot(parking_long, aes(x=hour, y=`mean(utilization)`, color=date)) + geom_line() + scale_x_discrete(limits=0:23)

该代码首先将CSV文件导入为数据框,然后使用tidyr包中的pivot_longer()函数将宽格式转换为长格式。接下来,使用dplyr包中的group_by()和summarize()函数计算出每天各时段停车位的平均使用率。最后,使用ggplot2包中的geom_line()函数绘制可视化图表,并使用scale_x_discrete()函数设置x轴的限制。

该可视化图表能够直观地展示餐馆停车场的使用情况,帮助经理更好地了解餐馆运营情况。