### R语言操作练习题示例
以下是几个基于R语言基础功能的操作练习题,涵盖了数据处理、绘图以及统计分析等内容:
#### 练习题 1:基本绘图
利用 `barplot()` 函数绘制水平条形图。给定颜色名称向量 `color_names` 和对应的频率向量 `freq`,完成以下任务:
- 创建一个长度为10的颜色名称向量 `color_names`。
- 随机生成一个长度相同的频率向量 `freq`。
- 使用 `par()` 设置图形参数,并调用 `barplot()` 绘制水平条形图[^2]。
```r
set.seed(123) # 设定随机种子以便结果可重复
color_names <- c("red", "blue", "green", "yellow", "black", "white", "orange", "purple", "brown", "pink")
freq <- sample(1:10, size = length(color_names), replace = TRUE)
# 图形参数调整
par(mar = c(5, 8, 4, 2) + 0.1, yaxs = "i")
# 绘制水平条形图
barplot(freq, horiz = TRUE, names.arg = color_names, las = 1, col = rainbow(length(color_names)), main = "Color Frequencies")
```
---
#### 练习题 2:饼图绘制
根据给定向量 `data_vector` 的比例关系,使用 `pie()` 函数绘制饼图。具体要求如下:
- 定义一个包含五个类别的向量 `categories`。
- 对应定义一个数值型向量 `values` 表示各分类的比例。
- 调整字体大小并添加图例说明[^4]。
```r
categories <- c("A", "B", "C", "D", "E")
values <- c(10, 20, 30, 25, 15)
# 绘制饼图
pie(values, labels = paste(categories, values, sep = ": "), col = heat.colors(length(categories)), main = "Pie Chart Example")
# 添加图例
legend("topright", legend = categories, fill = heat.colors(length(categories)))
```
---
#### 练习题 3:散点图与回归线拟合
加载内置数据集 `mtcars` 并完成以下任务:
- 提取变量 `mpg`(每加仑行驶英里数)和 `wt`(车辆重量)作为横纵坐标。
- 使用 `plot()` 绘制散点图,并通过 `abline()` 添加一条简单的线性回归直线[^3]。
```r
# 加载 mtcars 数据集
data(mtcars)
# 散点图绘制
plot(mtcars$wt, mtcars$mpg, pch = 19, col = "blue", xlab = "Weight (1000 lbs)", ylab = "Miles per Gallon", main = "Scatter Plot with Regression Line")
# 计算线性模型并添加回归线
model <- lm(mpg ~ wt, data = mtcars)
abline(model, col = "red", lwd = 2)
```
---
#### 练习题 4:多面板图表布局
创建一个多面板图表布局,展示两个子图。第一个子图为正弦函数曲线,第二个子图为余弦函数曲线。具体实现方法可以参考网格布局工具 `grid.layout()` 或者简单分屏方式 `layout()`。
```r
# 方法一:使用 layout()
layout(matrix(c(1, 2), nrow = 1))
# 子图 1 - 正弦函数
curve(sin(x), from = 0, to = 2 * pi, col = "dark green", ylim = c(-1.5, 1.5), ylab = "", main = "Sine Function")
# 子图 2 - 余弦函数
curve(cos(x), from = 0, to = 2 * pi, col = "dark blue", add = FALSE, ylim = c(-1.5, 1.5), ylab = "", main = "Cosine Function")
# 恢复默认布局
layout(1)
```
---
#### 练习题 5:逻辑运算符应用
编写一段代码验证字符串 `"Hello world!"` 是否可以通过赋值传递给另一个变量,并测试其相等性。最后尝试改变其中一个变量的值,观察两者的变化情况。
```r
a <- "Hello world!"
b <- a
print(a == b) # 测试初始状态下的相等性
b <- "New value"
print(a == b) # 修改后再次比较
```
---
###