R语言基础知识总结(超详细整理)
一、R语言简介
R是一种用于统计分析、数据可视化和科学计算的开源编程语言和环境。其语法简洁,内置丰富的统计函数和图形函数,广泛应用于数据科学、机器学习和生物统计等领域。
整体知识点目录:
R语言基础知识总结
│
├─ 安装与配置
│ ├─ 安装R环境
│ ├─ 配置RStudio
│ └─ 包管理(安装、加载)
│
├─ 基本语法
│ ├─ 变量与数据类型
│ ├─ 运算符
│ ├─ 流程控制(条件、循环)
│ └─ 函数定义与调用
│
├─ 数据结构
│ ├─ 向量(vector)
│ ├─ 矩阵(matrix)
│ ├─ 数据框(data.frame)
│ ├─ 列表(list)
│ └─ 因子(factor)
│
├─ 数据操作
│ ├─ 读取与写入文件
│ ├─ 子集选择与索引
│ ├─ 数据清洗
│ └─ 数据变换(排序、合并、分组)
│
├─ 可视化
│ ├─ 基础绘图函数
│ ├─ ggplot2简介
│ └─ 图形美化与定制
│
├─ 常用包介绍
│ ├─ tidyverse
│ ├─ data.table
│ ├─ dplyr
│ └─ readr
│
└─ 练习题与解析├─ 选择题├─ 判断题├─ 填空题├─ 简答题└─ 编程题
二、安装与环境配置
- 安装:访问CRAN镜像,下载适合操作系统的安装包并安装。
- RStudio:推荐使用RStudio IDE,提供代码编辑、调试、可视化和项目管理功能。
- Package管理:使用
install.packages("包名")
安装,使用library(包名)
加载。
# 安装并加载ggplot2包
install.packages("ggplot2")
library(ggplot2)
三、基本语法
1. 变量与赋值
- 赋值符号:
<-
、=
x <- 10
y = 3.14
2. 注释
# 单行注释
3. 数据类型
类型 | 描述 | 示例 |
---|---|---|
numeric | 数值类型(浮点) | 3.14 , 2 |
integer | 整数类型 | 1L , 2L |
character | 字符串 | "Hello" |
logical | 布尔值 | TRUE , FALSE |
factor | 分类变量 | factor(c("A","B")) |
Date | 日期类型 | as.Date("2025-06-04") |
4. 数据结构
-
向量(vector):同一类型元素的一维数组
v <- c(1, 2, 3, 4)
-
矩阵(matrix):二维数组
m <- matrix(1:6, nrow=2, ncol=3)
-
数据框(data.frame):异构二维表
df <- data.frame(Name=c("A","B"), Score=c(90,85))
-
列表(list):可包含不同类型对象
lst <- list(num=1, str="R", vec=c(1,2,3))
四、基本操作
1. 索引与切片
v[2] # 第二个元素
m[1, ] # 矩阵第一行
df$Score # 数据框列访问
lst[["vec"]] # 列表元素访问
2. 统计函数
函数 | 作用 | 示例 |
---|---|---|
mean(x) | 均值 | mean(v) |
sum(x) | 求和 | sum(v) |
sd(x) | 标准差 | sd(v) |
summary(x) | 概括性统计 | summary(df) |
五、函数与流程控制
1. 自定义函数
add <- function(a, b) {return(a + b)
}
add(2,3)
2. 条件语句
if (x > 0) {print("正数")
} else {print("非正数")
}
3. 循环语句
for (i in 1:5) {print(i)
}
六、数据输入输出
# 读取CSV
data <- read.csv("data.csv", header=TRUE)
# 写出CSV
write.csv(data, "out.csv", row.names=FALSE)
七、可视化
使用ggplot2
包:
library(ggplot2)
ggplot(df, aes(x=Name, y=Score)) +geom_bar(stat="identity")
八、练习题(共30题)
一、选择题(每题2分,共10分)
-
下列哪种数据结构可存储不同类型元素?
A. vector B. matrix C. list D. factor答案:C
解析:list可包含多种类型元素。 -
R中用于计算均值的函数是?
A. sum() B. mean() C. sd() D. median()答案:B
解析:mean()
用于计算均值。 -
下列赋值操作中不正确的是?
A. x <- 5 B. y = 2 C. 3 -> z D. <- a 4答案:D
解析:<- a 4
语法错误。 -
将数据框
df
按列访问Score列可用?
A. df[“Score”] B. df$Score C. df[[“Score”]] D. 以上均可答案:D
解析:三种方式均可访问。 -
下列哪种函数能展示数据框的摘要信息?
A. head() B. dim() C. summary() D. str()答案:C
解析:summary()
生成概括性统计。
二、判断题(每题1分,共5分)
序号 | 题目 | 正误 |
---|---|---|
1 | R中字符串使用单引号和双引号均可。 | ✔ |
2 | matrix可存储不同类型元素。 | ✘ |
3 | install.packages() 安装包时需联网。 | ✔ |
4 | data.frame的行名称可以重复。 | ✘ |
5 | 函数rm() 可删除变量。 | ✔ |
三、填空题(每题2分,共10分)
-
R中表示逻辑真值的关键字是
________
。答案:TRUE
-
将数字向量
v
中的NA值删除可用函数________()
。答案:na.omit
-
将列表
lst
的第二个元素访问可写作________
。答案:lst[[2]]
-
读取CSV文件的函数是
________
。答案:read.csv
-
ggplot中添加散点图的几何函数是
________()
。答案:geom_point
四、简答题(每题4分,共20分)
-
简述factor在R中的作用及使用场景。
参考答案要点:factor用于存储分类变量,内部以整数和标签形式保存;适用于统计建模中的分类数据。
-
说明如何在R中安装和加载包,并举例说明。
参考答案要点:
install.packages("包名")
安装,library(包名)
或require(包名)
加载。 -
解释data.frame与matrix的区别。
参考答案要点:data.frame可存储异构类型,matrix只能存储同一类型元素;data.frame有行列名称。
-
描述ggplot2作图流程的三个核心要素。
参考答案要点:数据(data)、映射(aes)、几何对象(geom_)。
-
谈谈向量化运算在R中的优势。
参考答案要点:向量化运算无需显式循环,底层调用C语言实现,运行速度快且代码简洁。
五、编程题(每题5分,共25分)
- 写函数
count_na
,统计向量中NA值个数并返回。
count_na <- function(x) {sum(is.na(x))
}
解析:
is.na()
返回逻辑向量,sum()
累加TRUE个数。
- 编写函数
normalize
,将数值向量按min-max归一化到[0,1]。
normalize <- function(x) {(x - min(x, na.rm=TRUE)) / (max(x, na.rm=TRUE) - min(x, na.rm=TRUE))
}
解析:使用最小最大值计算归一化。
- 实现函数
filter_above
,返回大于阈值的向量子集。
filter_above <- function(x, thr) {x[x > thr]
}
解析:使用逻辑索引过滤。
- 写函数
read_and_summary
,读取CSV并返回摘要统计(summary)。
read_and_summary <- function(file) {dat <- read.csv(file, header=TRUE)summary(dat)
}
解析:结合I/O与统计函数。
- 用ggplot2绘制散点图,x轴为Sepal.Length,y轴为Sepal.Width(以iris数据集为例)。
library(ggplot2)
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) +geom_point() +labs(title="鸢尾花花萼尺寸散点图")
解析:演示常见可视化操作。
相关文章:
R语言基础知识总结(超详细整理)
一、R语言简介 R是一种用于统计分析、数据可视化和科学计算的开源编程语言和环境。其语法简洁,内置丰富的统计函数和图形函数,广泛应用于数据科学、机器学习和生物统计等领域。 整体知识点目录: R语言基础知识总结 │ ├─ 安装与配置 │ …...

深入理解系统:UML类图
UML类图 类图(class diagram) 描述系统中的对象类型,以及存在于它们之间的各种静态关系。 正向工程(forward engineering)在编写代码之前画UML图。 逆向工程(reverse engineering)从已有代码建…...
C# 中的 IRecipient
IRecipient<TMessage> 是 .NET 中消息传递机制的重要组成部分,特别是在 MVVM (Model-View-ViewModel) 模式中广泛使用。下面我将详细介绍这一机制及其应用。 基本概念 IRecipient<TMessage> 是 .NET Community Toolkit 和 MVVM Toolkit 中定义的一个接…...
大模型RNN
RNN(循环神经网络)是一种专门处理序列数据的神经网络架构,在自然语言处理(NLP)、语音识别、时间序列分析等领域有广泛应用。其核心作用是捕捉序列中的时序依赖关系,即当前输出不仅取决于当前输入࿰…...
Python环境搭建竞赛技术文章大纲
竞赛背景与意义 介绍Python在数据科学、机器学习等领域的重要性环境搭建对于竞赛项目效率的影响常见竞赛平台对Python环境的特殊要求 基础环境准备 操作系统选择与优化(Windows/Linux/macOS)Python版本选择(3.x推荐版本)解释器…...
Redisson - 实现延迟队列
Redisson 延迟队列 Redisson 是基于 Redis 的一款功能强大的 Java 客户端。它提供了诸如分布式锁、限流器、阻塞队列、延迟队列等高可用、高并发组件。 其中,RDelayedQueue 是对 Redis 数据结构的高阶封装,能让你将消息延迟一定时间后再进入消费队列。…...

软件工程的定义与发展历程
文章目录 一、软件工程的定义二、软件工程的发展历程1. 前软件工程时期(1940s-1960s)2. 软件工程诞生(1968)3. 结构化方法时期(1970s)4. 面向对象时期(1980s)5. 现代软件工程(1990s-至今) 三、软件工程的发展趋势 一、软件工程的定义 软件工程是应用系统化、规范化、可量化的方…...
艾利特协作机器人:重新定义工业涂胶场景的精度革命
品牌使命与技术基因 作为全球协作机器人领域成长最快的企业之一,艾利特始终聚焦于解决工业生产中的人机协作痛点。在汽车制造、3C电子、新能源等领域的涂胶工艺场景中,我们通过自主研发的EC系列协作机器人,实现了: 空间利用率&a…...

第十三节:第五部分:集合框架:集合嵌套
集合嵌套案例分析 代码: package com.itheima.day27_Collection_nesting;import java.util.*;/*目标:理解集合的嵌套。 江苏省 "南京市","扬州市","苏州市","无锡市","常州市" 湖北省 "武汉市","…...

Java设计模式之观察者模式详解
一、观察者模式简介 观察者模式(Observer Pattern)是一种行为型设计模式,它定义了对象之间的一对多依赖关系。当一个对象(主题)的状态发生改变时,所有依赖于它的对象(观察者)都会自…...

freeRTOS 消息队列之一个事件添加到消息队列超时怎么处理
一 消息队列的结构框图 xTasksWaitingToSend:这个列表存储了所有因为队列已满而等待发送消息的任务。当任务尝试向一个已满的队列发送消息时,该任务会被挂起并加入到xTasksWaitingToSend列表中,直到队列中有空间可用, xTasksW…...
十八、【用户认证篇】安全第一步:基于 JWT 的前后端分离认证方案
【用户认证篇】安全第一步:基于 JWT 的前后端分离认证方案 前言什么是 JWT (JSON Web Token)?准备工作第一部分:后端 Django 配置 JWT 认证1. 安装 `djangorestframework-simplejwt`2. 在 `settings.py` 中配置 `djangorestframework-simplejwt`3. 在项目的 `urls.py` 中添加…...
RabbitMQ 开机启动配置教程
RabbitMQ 开机启动配置教程 在本教程中,我们将详细介绍如何配置 RabbitMQ 以实现开机自动启动。此配置适用于手动安装的 RabbitMQ 版本。 环境准备 操作系统:CentOS 7RabbitMQ 版本:3.8.4Erlang 版本:21.3 步骤 1. 安装 Erla…...

Authpf(OpenBSD)认证防火墙到ssh连接到SSH端口转发技术栈 与渗透网络安全的关联 (RED Team Technique )
目录 🔍 1. Authpf概述与Shell设置的作用 什么是Authpf? Shell设置为/usr/sbin/authpf的作用与含义 🛠️ 2. Authpf工作原理与防火墙绕过机制 技术栈 工作原理 防火墙绕过机制 Shell关联 🌐 3. Authpf与SSH认证及服务探测…...

组合与排列
组合与排列主要有两个区别,区别在于是否按次序排列和符号表示不同。 全排列: 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当mn时所有的排列情况…...
神经网络-Day45
目录 一、tensorboard的基本操作1.1 发展历史1.2 tensorboard的原理 二、tensorboard实战2.1 cifar-10 MLP实战2.2 cifar-10 CNN实战 在神经网络训练中,为了帮助理解,借用了很多的组件,比如训练进度条、可视化的loss下降曲线、权重分布图&…...
【西门子杯工业嵌入式-1-基本环境与空白模板】
西门子杯工业嵌入式-1-基本环境与空白模板 项目资料一、软件安装与环境准备1. 安装MDK52. 安装驱动3. 安装GD32F470支持包 二、工程目录结构建议三、使用MDK创建工程流程1. 新建工程2. 添加工程组(Group)3. 添加源文件 四、编译配置设置(Opti…...

Apache Druid
目录 Apache Druid是什么? CVE-2021-25646(Apache Druid代码执行漏洞) Apache Druid是什么? Apache Druid是一个高性能、分布式的数据存储和分析系统。设计用于处理大量实时数据,并进行低延迟的查询。它特别适合用于分析大规模日志、事件数据…...

使用深蓝词库软件导入自定义的词库到微软拼音输入法
我这有一个人员名单,把它看作一个词库,下面我演示一下如何把这个词库导入微软输入法 首先建一个text文件,一行写一个词条 下载深蓝词库 按照我这个配置,点击转换,然后在桌面微软输入法那右键,选择设置 点…...
Docker快速部署AnythingLLM全攻略
Docker版AnythingLLM安装指南 环境准备 确保已安装: Docker Engine 20.10.14+Docker Compose 2.5.0+验证安装: docker --version && docker compose version安装步骤 创建持久化存储目录: mkdir -p ~/anythingllm/database ~/anythingllm/files运行容器(基础配置)…...

使用Node.js分片上传大文件到阿里云OSS
阿里云OSS的分片上传(Multipart Upload)是一种针对大文件优化的上传方式,其核心流程和关键特性如下: 1. 核心流程 分片上传分为三个步骤: 初始化任务:调用InitiateMultipartUpload接口创建上传任务…...
高性能分布式消息队列系统(四)
八、客户端模块的实现 客户端实现的总体框架 在 RabbitMQ 中,应用层提供消息服务的核心实体是 信道(Channel)。 用户想要与消息队列服务器交互时,通常不会直接操作底层的 TCP 连接,而是通过信道来进行各种消息的发布…...
C#异步编程:从线程到Task的进化之路
一、没有异步编程之前的时候 在异步编程出现之前,程序主要采用同步编程模型。这种模型下,所有操作按顺序执行,当一个操作(如I/O读写、网络请求)阻塞时,整个程序会被挂起,导致资源利用率低和响应延迟高。具体问题包括: 阻塞执行:同步代码在执行耗时操作时(如文件读取…...
[论文阅读] 人工智能+软件工程 | 用大模型优化软件性能
用大模型优化软件性能?这篇论文让代码跑出新速度! arXiv:2506.01249 SysLLMatic: Large Language Models are Software System Optimizers Huiyun Peng, Arjun Gupte, Ryan Hasler, Nicholas John Eliopoulos, Chien-Chou Ho, Rishi Mantri, Leo Deng, K…...

复变函数中的对数函数及其MATLAB演示
复变函数中的对数函数及其MATLAB演示 引言 在实变函数中,对数函数 ln x \ln x lnx定义在正实数集上,是一个相对简单的概念。然而,当我们进入复变函数领域时,对数函数展现出更加丰富和复杂的性质。本文将介绍复变函数中对数函…...

【Linux】Linux程序地址基础
参考博客:https://blog.csdn.net/sjsjnsjnn/article/details/125533127 一、地址空间的阐述 1.1 程序地址空间 下面的图片展示了程序地址空间的组成结构 我们通过代码来验证一下 int g_unval; int g_val 100;int main(int argc, char *argv[]);void test1() {i…...
React 项目初始化与搭建指南
React 项目初始化有多种方式,可以选择已有的脚手架工具快速创建项目,也可以自定义项目结构并使用构建工具实现项目的构建打包流程。 1. 脚手架方案 1.1. Vite 通过 Vite 创建 React 项目非常简单,只需一行命令即可完成。Vite 的工程初始化…...

将图形可视化工具的 Python 脚本打包为 Windows 应用程序
前文我们已经写了一个基于python的tkinter库和matplotlib库的图形可视化工具。 基于Python的tkinter库的图形可视化工具(15种图形的完整代码):基于Python的tkinter库的图形可视化工具(15种图形的完整代码)-CSDN博客 在前文基础上&…...
AWS DocumentDB vs MongoDB:数据库的技术抉择
随着非关系型数据库在现代应用中的广泛应用,文档型数据库因其灵活的结构与出色的扩展性,逐渐成为企业开发与架构设计中的核心选择。在众多文档数据库中,MongoDB 凭借其成熟生态与社区支持占据主导地位;与此同时,AWS 提…...

无人机军用与民用技术对比分析
一、材料区别 军用无人机: 1. 高强度特种材料: 大量使用钛合金、碳纤维复合材料,兼顾轻量化与高强度,提升抗冲击性和隐身性能。 关键部件依赖进口材料。 2. 隐身涂层: 采用雷达吸波材料和低红外特征涂料…...