学习笔记:R语言基础

文章目录

  • 一、R语言简介
  • 二、选择R的原因
  • 三、R基本数据对象
    • (一)向量
    • (二)矩阵
    • (三)数组
    • (四)因子
    • (五)列表
    • (六)数据框
    • (七)函数
  • 四、基本函数应用示例
  • 五、自定义函数
    • (一)自定义函数定义
    • (二)自定义函数示例
      • 1、求和函数
      • 2、分段函数
  • 六、结束语

一、R语言简介

  • R语言是一种开源的统计计算和图形制作环境,它不仅提供了全面的数据处理能力,还具备强大的数组运算工具,尤其在向量和矩阵运算上表现出色。此外,R语言内置了丰富的统计分析方法,并拥有卓越的统计图表绘制功能。更关键的是,R语言提供了一种灵活且功能强大的编程语言,使得用户能够自由地进行数据操作、输入输出控制以及自定义函数,以满足各种复杂的数据分析需求。

二、选择R的原因

  • 尽管R语言在处理大数据集时性能受限,不适合直接处理大规模数据,但它作为教学与实验工具的价值不容忽视。在教学中,R语言因其清晰易懂的算法模型展示及直观的绘图功能而广受欢迎,便于学生深入理解统计学原理。当面临大数据挑战时,可通过抽样或结合Hadoop、Spark等并行计算框架来解决。此外,通过学习R语言中的数据分析方法和模型原理,用户可以快速迁移到其他大数据处理工具上,实现无缝衔接。

三、R基本数据对象

(一)向量

  • R语言中的向量是一种基本且重要的数据结构,它是一维的有序元素序列,可以包含整数、实数、字符、逻辑值或复数等同类型数据。通过c()函数创建,例如 vec <- c(1, 2, 3, "a", TRUE)。向量在R中是处理和分析数据的基础,许多高级数据结构如矩阵、数组和列表都是基于向量构建的。

(二)矩阵

  • 在R语言中,矩阵是一个二维数组,用于存储相同类型(如数值、字符)的数据。通过matrix(data, nrow, ncol, byrow=FALSE, dimnames=NULL)函数创建,其中data是向量数据源,nrowncol定义行数和列数,byrow参数决定是否按行填充,若为TRUE则按行填充,FALSE则按列;dimnames可为矩阵添加行名和列名。矩阵支持各种数学运算,可通过索引进行元素访问和修改。

(三)数组

  • 在R语言中,数组是一种多维数据结构,用于存储同一类型的数据。通过array()函数创建,它接受一个向量作为基础数据,并通过dim参数指定各维度大小来形成更高维度的集合。例如,可以创建包含多个矩阵的三维数组,每个元素都具有相同的类型。数组是向量和矩阵的扩展,可用来处理更复杂、多层面的数据组织。

(四)因子

  • 在R语言中,因子(factor)是一种特殊的数据类型,用于表示分类或有序类别数据。它将名义变量或有序变量的各个类别值编码为整数,并存储一个映射表,将这些整数对应到原始类别标签。因子是统计分析和可视化时的关键对象,能确保分类变量在模型构建、假设检验(如卡方检验)以及各类回归分析、ANOVA等过程中得到正确处理。创建因子使用factor()函数,可自定义级别顺序和标签。

(五)列表

  • R语言中的列表是一种灵活且强大的数据结构,它是一个有序的、可变长度的集合,能够容纳不同类型(如数值、字符、逻辑甚至其他数据结构如向量、矩阵、数组或数据框等)的对象。通过list()函数创建,列表允许将多个元素聚合为单个对象,便于管理和操作多组不同性质的数据。例如,可以创建一个包含字符串、数值向量和逻辑矩阵的列表,每个成分都可以独立存取和修改。

(六)数据框

  • R语言中的数据框(data frame)是一种特殊的数据结构,它将表格形式的数据组织成列向量的集合。每一列代表一个变量,可以是不同数据类型(如数值、字符或逻辑型),而每行则表示观测样本。数据框可通过data.frame()函数构建,其各列必须具有相同长度。数据框常用于统计分析和数据可视化,类似于电子表格,且能灵活处理多元统计中异质类型的数据集。

(七)函数

  • 在R语言中,函数是执行特定任务的可重复使用的代码块。用户通过定义函数名、参数列表和函数体来创建函数,函数能接收输入(参数),经过一系列计算或逻辑处理后,返回一个结果。例如,mean()是一个内置函数,用于计算向量或数组的平均值;用户也可自定义函数,如myFunction(x, y) <- {x + y}实现两数相加的功能。函数有助于模块化编程,提高代码复用性和组织性。

四、基本函数应用示例

  1. 创建向量:在R中,通过c()函数可以创建一维向量。例如,x <- c(10.4, 5.6, 3.1, 6.4, 21.7)将一系列数值组合成名为x的浮点数向量。赋值符号可以用<-=, 这里所有元素自动转换为一致的数据类型(在这个例子中是数值型)。

  2. 生成序列:使用seq()函数可以生成一系列连续数值。如seq(2, 10)默认步长为1生成2到10的整数序列;指定步长为2用seq(1, 10, by = 2);步长为0.2则为seq(1, 5, by = 0.2);从2开始,步长为3产生4个数:seq(2, 8, by = 3);在区间[-5,5]生成100个数:seq(-5, 5, length.out = 100)

  3. 重复序列:rep()用于复制向量或生成重复序列。比如rep(c(1, 2, 3), times = 3)会将整个向量重复3次;而rep(x, each = 2)会将向量x中的每个元素分别复制2次形成新序列并赋值给data。

  4. 拼接函数:paste()结合多个数据项为一个字符串。如paste("Hello", "World")得到"Hello World";添加分隔符:paste(c("A", "B", "C"), collapse = ", ")结果为"A, B, C";拼接与序列结合实例:paste(seq(1, 3), "apple")生成"1 apple", “2 apple”, “3 apple”。

  5. 数据子集选择与修改:通过索引操作符[]选取向量元素,如data[3:5]获取向量data第3至第5个元素;条件选择:data[data > 300 & data < 400]选出data中300至400之间的元素,并统计其数量:sum(data > 300 & data < 400)

  6. 汇总函数:summary()提供对象的基本统计信息。对于向量,输出包括最小值、四分位数、中位数、均值和最大值等。例如,summary(data)查看向量data的相关统计指标。

  7. 因子函数:factor()将字符向量转化为有序或无序因子,便于分类分析。如data <- factor(c("湖南","四川","四川","湖南","贵州","湖南","贵州"))levels(data)显示因子的类别。

  8. 矩阵函数:matrix()创建矩阵,如matrix(c(4,-1,2,1,1,1,0,3,0,3,1,4), nrow = 4, ncol = 3)创建一个4行3列的矩阵。访问矩阵元素如A[2, 3];创建单位矩阵:diag(n);填充特定元素矩阵示例已给出。

  9. 矩阵转置函数:t()实现矩阵转置,如t(A)将矩阵A转置。

  10. 矩阵维数函数:dim()返回或设置矩阵维数,如dim(A)查询矩阵A的维度,dim(A) <- c(3, 4)更改A的维度为3行4列。

  11. 数组函数:通过array()dim参数定义多维数组,例如创建三维数组需指定每维大小。

  12. 列合并与行合并:cbind()按列合并矩阵,如cbind(A, B)rbind()按行合并矩阵,如rbind(A, B)

  13. 列表函数:列表是一种可包含不同类型元素的数据结构。要获取列表中属性值,如list_data$attribute_name。例如,my_list <- list(name = "Mike", age = 25); my_list$name返回"Mike"。

  14. 数据帧函数:data.frame()构造数据帧,各列可以是不同模式。如df <- data.frame(name = c("John", "Jane"), age = c(30, 28))创建一个数据帧。引用数据帧元素时通常使用$符号,如df$nameattach()detach()函数用于简化数据框变量的引用,但不推荐频繁使用以避免命名冲突等问题。例如,attach(df)后可以直接用name引用列名,结束后用detach(df)解除关联。

  15. read.table()函数:read.table()是R语言中用于读取纯文本文件并将其中数据转换为数据帧的函数。该函数要求输入文件的第一行包含变量名,后续行代表数据记录,每行按列对应各变量值。若无表头,则默认变量名为"v1", "v2"等;若有表头但无行索引,通过设置header=TRUE指明首行为列名。此外,可通过setwd()函数改变当前工作目录以便正确读取目标文件。

    • 创建文本文件info.txt
      在这里插入图片描述
    • 读取,表头采用默认变量
      在这里插入图片描述
    • 读取,采用文件首行做表头
      在这里插入图片描述
    • 使用attach()函数简化对info的数据引用
      在这里插入图片描述

五、自定义函数

(一)自定义函数定义

  • 在R语言中,用户通过function()关键字定义自定义函数,例如:myFunction <- function(arg1, arg2) {expression},其中arg1和arg2为输入参数,expression是基于这些参数进行计算或处理的代码块。

(二)自定义函数示例

1、求和函数

在这里插入图片描述

2、分段函数

f ( x ) = { x + 2 ( 1 ) x 2 ( 2 ) f(x)=\begin{cases} x+2 &(1)\\ x^2 &(2)\\ \end{cases} f(x)={x+2x2(1)(2)

  • 定义函数,并绘制图像
    在这里插入图片描述
    在这里插入图片描述

六、结束语

  • 总之,R语言作为开源统计计算和图形制作的首选工具,凭借其全面的数据处理能力、强大的数组运算以及丰富的内置统计模型和可视化功能,在全球数据分析领域占据重要地位。尽管在处理超大规模数据时面临性能挑战,但通过合理抽样或结合分布式计算框架,R语言依然能够胜任复杂的数据分析任务。从基础数据对象如向量、矩阵到更高级的数据结构如数组、因子、列表和数据框,R语言提供了一套完整且灵活的数据组织方式,满足各种类型数据的存储与操作需求。而函数的运用则大大提升了代码复用性和程序结构化程度,无论是利用内置函数进行快速统计分析,还是自定义函数解决特定问题,都彰显了R语言在实现高效数据分析流程上的优越性。掌握R语言的基本语法和核心功能,无疑将助力用户深入探索数据背后的规律,提升解决问题的能力,并在实际应用中发挥关键作用。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uni-app condition启动模式配置

锋哥原创的uni-app视频教程&#xff1a; 2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中..._哔哩哔哩_bilibili2023版uniapp从入门到上天视频教程(Java后端无废话版)&#xff0c;火爆更新中...共计23条视频&#xff0c;包括&#xff1a;第1讲 uni…

DM、Oracle、GaussDB、Kingbase8(人大金仓数据库)和HIVE给列增加注释

DM数据库给列增加注释 1、创建表 CREATE TABLE test222 ( id int NOT NULL PRIMARY KEY, name varchar(1000) DEFAULT NULL, email varchar(1000) DEFAULT NULL, phone varchar(1000) DEFAULT NULL ) 2、给列添加注释 comment on column TEST222.NAME is 这是一个列注释; 例如…

数字身份验证:跨境电商如何应对账户安全挑战?

在数字化时代&#xff0c;随着跨境电商的蓬勃发展&#xff0c;账户安全问题逐渐成为行业和消费者关注的焦点。随着网络犯罪日益猖獗&#xff0c;用户的数字身份安全面临着更加复杂的威胁。本文将深入探讨数字身份验证在跨境电商中的重要性&#xff0c;并探讨各种创新技术和策略…

Android MVC 写法

前言 Model&#xff1a;负责数据逻辑 View&#xff1a;负责视图逻辑 Controller&#xff1a;负责业务逻辑 持有关系&#xff1a; 1、View 持有 Controller 2、Controller 持有 Model 3、Model 持有 View 辅助工具&#xff1a;ViewBinding 执行流程&#xff1a;View >…

Windows系统配置pytorch环境,Jupyter notebook编辑器安装使用(深度学习本地篇)

如今现在好一点的笔记本都自带英伟达独立显卡&#xff0c;对于一些简单的深度学习项目&#xff0c;是不需要连接服务器的&#xff0c;甚至数据量不大的话&#xff0c;cpu也足够进行训练学习。我把电脑上一些以前的笔记整理一下&#xff0c;记录起来&#xff0c;方便自己35岁事业…

python/selenium/jenkins整合

1、新建python项目&#xff0c;专门写selenium代码&#xff0c;建议用pytest框架写。 2、把代码上传到代码库中。 3、环境配置&#xff1a; 3.1 在跑jenkins的机器上配置好python环境&#xff0c;需要python --version能在任何地方运行&#xff08;配置好系统环境变量&#…

Idea配置热部署

Idea配置热部署 一、概念 热部署就是正在运行状态的应用&#xff0c;修改了他的源码之后&#xff0c;在不重新启动的情况下能够自动把增量内容编译并部署到服务器上&#xff0c;使得修改立即生效。热部署为了解决的问题有两个&#xff0c; 一是在开发的时候&#xff0c;修改代…

【Python排序算法系列】—— 选择排序

​ &#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 选择排序 过程演示&#xff1a; 选择排序实现代码&#xff1a; 分析选择排序&#xff1a…

nodejs+vue+微信小程序+python+PHP的林业信息管理系统的设计与实现-计算机毕业设计推荐

本文先充分调查林业信息管理系统的需求分析&#xff0c;深入剖析系统应该具有的功能&#xff0c;并设计完善的数据库。利用成熟的开发技术完成编码工作&#xff0c;林业信息管理系统可以为林业局领导提供业务管理功能&#xff0c;林业局领导也就是系统的管理员&#xff0c;具有…

深入ArkUI:深入实战组件text和text input

文章目录 Text组件介绍Text组件的属性方法Text:文本显示组件4.3TextInput组件实战案例:图片宽度控制页面本文总结要点回顾在今天的课程中,我们将深入学习ArkUI提供的基础组件,着重探讨text和text input两个组件。 Text组件介绍 Text组件是一个用于显示文本的组件,其主要作…

重新认识Word——自动目录

重新认识Word——自动目录 自动插入目录要点大纲级别 自定义目录格式给图表插入目录致谢和参考文献没有在目录之中一些目录的问题目录中有“目录”二字一份文档&#xff0c;两份目录 之前我们对文本内容的编辑有了一个大概的了解&#xff0c;接下来我们来了解一下&#xff0c;W…

【算法与数据结构】435、LeetCode无重叠区间

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;思路和【算法与数据结构】452、LeetCode用最少数量的箭引爆气球类似&#xff0c;也是排序找重叠区间。…

(已解决)(pytorch指定了gpu但还是占用了一点0号gpu)以及错误(cuDNN error: CUDNN_STATUS_INTERNAL_ERROR)

文章目录 错误原因解决问题 错误原因 出现错误cuDNN error: CUDNN_STATUS_INTERNAL_ERROR&#xff0c;从这个名字就可以看出&#xff0c;出错原因其实有可能有很多种&#xff0c;我这里说一种比较常见的&#xff0c;就是&#xff1a;显存不足。 一个困惑点在于&#xff0c;在…

archiver error. Connect internal only, until freed.

[64000][257] ORA-00257: archiver error. Connect internal only, until freed.原因 归档日志写满了、闪回日志写满了(根本原因是服务器磁盘写满了) # 切换到oracle服务 su - oracle# 使用sysdba用户登录 解决方案:(https://blog.csdn.net/qq_37635373/article/details/933282…

一体化、一站式!智能视频客服加码全媒体云呼叫中心能力

凭借对电话、短信、邮件、社交媒体、视频等数种沟通渠道强大的统一集成能力&#xff0c;全媒体云呼叫中心已跃升成为现代企业客户服务的核心工具&#xff0c;高效便捷地为企业提供客户服务。而随着消费者需求愈加多元化和个性化&#xff0c;传统的语音通话方式已无法满足部分消…

WPF 显示气泡提示框

气泡提示框应用举例 有时候在我们开发的软件经常会遇到需要提示用户的地方&#xff0c;为了让用户更直观&#xff0c;快速了解提示信息&#xff0c;使用简洁、好看又方便的气泡提示框显得更加方便&#xff0c;更具人性化。如下面例子&#xff1a;(当用户未输入账号时&#xff0…

大创项目推荐 深度学习乳腺癌分类

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度&#xff0c;召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…

win上使用wireshark 抓包 | 安装、实战抓包、筛选规则

先随便讲两句吧 win 上抓包&#xff0c;使用wireshark 直接运行&#xff0c;通过选定网卡、配置筛选规则 相比&#xff0c;在linux 上抓包&#xff0c;直接使用命令 tcpdump 再添加筛选规则 就可以 好像wireshark的一个插件不维护&#xff0c;导致需要重新安装插件&#xff0c;…

在IntelliJ IDEA中精通Git配置与使用:全面指南

目录 1 前言2 idea中使用git的准备2.1 在 IntelliJ IDEA 中配置 Git2.2 配置 Git 忽略文件 3 在IntelliJ IDEA中使用Git的基本步骤3.1 项目导入到 Git3.2 查看与切换版本信息 4 在 IntelliJ IDEA 中使用分支4.1 创建分支4.2 无冲突合并4.3 冲突合并 5 结语 1 前言 版本控制是现…

Linux(ubuntu)下git / github/gitee使用

先附上git命令 linuxchenxiao:~$ cd Templates/ 先进入一个目录&#xff0c;也可mkdir新建一个目录&#xff1a;用于接下来初始化为git可以管理的仓库 这个目录就是所说的工作目录&#xff0c;指当前正在进行开发的项目的本地目录。 linuxchenxiao:~/Templates$ git init 已…