R语言基础知识总结(超详细整理)

news2025/6/6 9:19:14

一、R语言简介

R是一种用于统计分析、数据可视化和科学计算的开源编程语言和环境。其语法简洁,内置丰富的统计函数和图形函数,广泛应用于数据科学、机器学习和生物统计等领域。


整体知识点目录:

R语言基础知识总结
│
├─ 安装与配置
│    ├─ 安装R环境
│    ├─ 配置RStudio
│    └─ 包管理(安装、加载)
│
├─ 基本语法
│    ├─ 变量与数据类型
│    ├─ 运算符
│    ├─ 流程控制(条件、循环)
│    └─ 函数定义与调用
│
├─ 数据结构
│    ├─ 向量(vector)
│    ├─ 矩阵(matrix)
│    ├─ 数据框(data.frame)
│    ├─ 列表(list)
│    └─ 因子(factor)
│
├─ 数据操作
│    ├─ 读取与写入文件
│    ├─ 子集选择与索引
│    ├─ 数据清洗
│    └─ 数据变换(排序、合并、分组)
│
├─ 可视化
│    ├─ 基础绘图函数
│    ├─ ggplot2简介
│    └─ 图形美化与定制
│
├─ 常用包介绍
│    ├─ tidyverse
│    ├─ data.table
│    ├─ dplyr
│    └─ readr
│
└─ 练习题与解析
     ├─ 选择题
     ├─ 判断题
     ├─ 填空题
     ├─ 简答题
     └─ 编程题

二、安装与环境配置

  1. 安装:访问CRAN镜像,下载适合操作系统的安装包并安装。
  2. RStudio:推荐使用RStudio IDE,提供代码编辑、调试、可视化和项目管理功能。
  3. 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分)

  1. 下列哪种数据结构可存储不同类型元素?
    A. vector B. matrix C. list D. factor

    答案:C
    解析:list可包含多种类型元素。

  2. R中用于计算均值的函数是?
    A. sum() B. mean() C. sd() D. median()

    答案:B
    解析mean()用于计算均值。

  3. 下列赋值操作中不正确的是?
    A. x <- 5 B. y = 2 C. 3 -> z D. <- a 4

    答案:D
    解析<- a 4语法错误。

  4. 将数据框df按列访问Score列可用?
    A. df[“Score”] B. df$Score C. df[[“Score”]] D. 以上均可

    答案:D
    解析:三种方式均可访问。

  5. 下列哪种函数能展示数据框的摘要信息?
    A. head() B. dim() C. summary() D. str()

    答案:C
    解析summary()生成概括性统计。

二、判断题(每题1分,共5分)

序号题目正误
1R中字符串使用单引号和双引号均可。
2matrix可存储不同类型元素。
3install.packages()安装包时需联网。
4data.frame的行名称可以重复。
5函数rm()可删除变量。

三、填空题(每题2分,共10分)

  1. R中表示逻辑真值的关键字是 ________

    答案:TRUE

  2. 将数字向量v中的NA值删除可用函数 ________()

    答案:na.omit

  3. 将列表lst的第二个元素访问可写作 ________

    答案:lst[[2]]

  4. 读取CSV文件的函数是 ________

    答案:read.csv

  5. ggplot中添加散点图的几何函数是 ________()

    答案:geom_point

四、简答题(每题4分,共20分)

  1. 简述factor在R中的作用及使用场景。

    参考答案要点:factor用于存储分类变量,内部以整数和标签形式保存;适用于统计建模中的分类数据。

  2. 说明如何在R中安装和加载包,并举例说明。

    参考答案要点install.packages("包名")安装,library(包名)require(包名)加载。

  3. 解释data.frame与matrix的区别。

    参考答案要点:data.frame可存储异构类型,matrix只能存储同一类型元素;data.frame有行列名称。

  4. 描述ggplot2作图流程的三个核心要素。

    参考答案要点:数据(data)、映射(aes)、几何对象(geom_)。

  5. 谈谈向量化运算在R中的优势。

    参考答案要点:向量化运算无需显式循环,底层调用C语言实现,运行速度快且代码简洁。

五、编程题(每题5分,共25分)

  1. 写函数count_na,统计向量中NA值个数并返回。
count_na <- function(x) {
  sum(is.na(x))
}

解析is.na()返回逻辑向量,sum()累加TRUE个数。

  1. 编写函数normalize,将数值向量按min-max归一化到[0,1]。
normalize <- function(x) {
  (x - min(x, na.rm=TRUE)) / (max(x, na.rm=TRUE) - min(x, na.rm=TRUE))
}

解析:使用最小最大值计算归一化。

  1. 实现函数filter_above,返回大于阈值的向量子集。
filter_above <- function(x, thr) {
  x[x > thr]
}

解析:使用逻辑索引过滤。

  1. 写函数read_and_summary,读取CSV并返回摘要统计(summary)。
read_and_summary <- function(file) {
  dat <- read.csv(file, header=TRUE)
  summary(dat)
}

解析:结合I/O与统计函数。

  1. 用ggplot2绘制散点图,x轴为Sepal.Length,y轴为Sepal.Width(以iris数据集为例)。
library(ggplot2)
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) +
  geom_point() +
  labs(title="鸢尾花花萼尺寸散点图")

解析:演示常见可视化操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2401489.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解系统:UML类图

UML类图 类图&#xff08;class diagram&#xff09; 描述系统中的对象类型&#xff0c;以及存在于它们之间的各种静态关系。 正向工程&#xff08;forward engineering&#xff09;在编写代码之前画UML图。 逆向工程&#xff08;reverse engineering&#xff09;从已有代码建…

软件工程的定义与发展历程

文章目录 一、软件工程的定义二、软件工程的发展历程1. 前软件工程时期(1940s-1960s)2. 软件工程诞生(1968)3. 结构化方法时期(1970s)4. 面向对象时期(1980s)5. 现代软件工程(1990s-至今) 三、软件工程的发展趋势 一、软件工程的定义 软件工程是应用系统化、规范化、可量化的方…

第十三节:第五部分:集合框架:集合嵌套

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

Java设计模式之观察者模式详解

一、观察者模式简介 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了对象之间的一对多依赖关系。当一个对象&#xff08;主题&#xff09;的状态发生改变时&#xff0c;所有依赖于它的对象&#xff08;观察者&#xff09;都会自…

freeRTOS 消息队列之一个事件添加到消息队列超时怎么处理

一 消息队列的结构框图 xTasksWaitingToSend‌&#xff1a;这个列表存储了所有因为队列已满而等待发送消息的任务。当任务尝试向一个已满的队列发送消息时&#xff0c;该任务会被挂起并加入到xTasksWaitingToSend列表中&#xff0c;直到队列中有空间可用‌&#xff0c; xTasksW…

Authpf(OpenBSD)认证防火墙到ssh连接到SSH端口转发技术栈 与渗透网络安全的关联 (RED Team Technique )

目录 &#x1f50d; 1. Authpf概述与Shell设置的作用 什么是Authpf&#xff1f; Shell设置为/usr/sbin/authpf的作用与含义 &#x1f6e0;️ 2. Authpf工作原理与防火墙绕过机制 技术栈 工作原理 防火墙绕过机制 Shell关联 &#x1f310; 3. Authpf与SSH认证及服务探测…

组合与排列

组合与排列主要有两个区别&#xff0c;区别在于是否按次序排列和符号表示不同。 全排列&#xff1a; 从n个不同元素中任取m&#xff08;m≤n&#xff09;个元素&#xff0c;按照一定的顺序排列起来&#xff0c;叫做从n个不同元素中取出m个元素的一个排列。当mn时所有的排列情况…

Apache Druid

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

使用深蓝词库软件导入自定义的词库到微软拼音输入法

我这有一个人员名单&#xff0c;把它看作一个词库&#xff0c;下面我演示一下如何把这个词库导入微软输入法 首先建一个text文件&#xff0c;一行写一个词条 下载深蓝词库 按照我这个配置&#xff0c;点击转换&#xff0c;然后在桌面微软输入法那右键&#xff0c;选择设置 点…

使用Node.js分片上传大文件到阿里云OSS

阿里云OSS的分片上传&#xff08;Multipart Upload&#xff09;是一种针对大文件优化的上传方式&#xff0c;其核心流程和关键特性如下&#xff1a; 1. ‌核心流程‌ 分片上传分为三个步骤&#xff1a; 初始化任务‌&#xff1a;调用InitiateMultipartUpload接口创建上传任务…

复变函数中的对数函数及其MATLAB演示

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

【Linux】Linux程序地址基础

参考博客&#xff1a;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…

将图形可视化工具的 Python 脚本打包为 Windows 应用程序

前文我们已经写了一个基于python的tkinter库和matplotlib库的图形可视化工具。 基于Python的tkinter库的图形可视化工具&#xff08;15种图形的完整代码&#xff09;:基于Python的tkinter库的图形可视化工具&#xff08;15种图形的完整代码&#xff09;-CSDN博客 在前文基础上&…

无人机军用与民用技术对比分析

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

刷leetcode hot100--矩阵6/1

1.螺旋矩阵【很久】6/1【感觉就是思路的搬运工&#xff0c;没完全理解】 54. 螺旋矩阵 - 力扣&#xff08;LeetCode&#xff09; 原来想 但是如果是奇数矩阵&#xff0c;遍历不到中间 解决思路&#xff1a; 用left,right,top,down标记/限定每次遍历的元素&#xff0c;每次从…

Docker轻松搭建Neo4j+APOC环境

Docker轻松搭建Neo4jAPOC环境 一、简介二、Docker部署neo4j三、Docker安装APOC插件四、删除数据库/切换数据库 一、简介 Neo4j 是一款高性能的 原生图数据库&#xff0c;采用 属性图模型 存储数据&#xff0c;支持 Cypher查询语言&#xff0c;适用于复杂关系数据的存储和分析。…

定制开发开源AI智能名片S2B2C商城小程序在无界零售中的应用与行业智能升级示范研究

摘要&#xff1a;本文聚焦无界零售背景下京东从零售产品提供者向零售基础设施提供者的转变&#xff0c;探讨定制开发开源AI智能名片S2B2C商城小程序在这一转变中的应用。通过分析该小程序在商业运营成本降低、效率提升、用户体验优化等方面的作用&#xff0c;以及其与京东AI和冯…

【大模型:知识图谱】--5.neo4j数据库管理(cypher语法2)

目录 1.节点语法 1.1.CREATE--创建节点 1.2.MATCH--查询节点 1.3.RETURN--返回节点 1.4.WHERE--过滤节点 2.关系语法 2.1.创建关系 2.2.查询关系 3.删除语法 3.1.DELETE 删除 3.2.REMOVE 删除 4.功能补充 4.1.SET &#xff08;添加属性&#xff09; 4.2.NULL 值 …

贪心算法应用:装箱问题(BFD算法)详解

贪心算法应用&#xff1a;装箱问题(BFD算法)详解 1. 装箱问题与BFD算法概述 1.1 装箱问题定义 装箱问题(Bin Packing Problem)是组合优化中的经典问题&#xff0c;其定义为&#xff1a; 给定n个物品&#xff0c;每个物品有大小wᵢ (0 < wᵢ ≤ C)无限数量的箱子&#xf…

编程技能:格式化打印05,格式控制符

专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏&#xff0c;故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 &#xff08;一&#xff09;WIn32 专栏导航 上一篇&#xff1a;编程技能&#xff1a;格式化打印04&#xff0c;sprintf 回到目录…