Class 03 - R语言的 Vectors(向量) 与 lists(列表)

news2024/11/26 20:33:23

Class 03 - R语言的 Vector与 列表 list

  • R语言语法
    • 脚本文件的创建、保存、和修改名称
    • 第一个函数
    • 使用帮助功能查看函数详细说明
    • 语法问题
    • 变量与赋值
      • 定义变量名称格式
      • 调用变量
  • R中的数据结构
  • Vectors (向量)
    • 创建向量
    • 查看向量的性质
      • 查看数据类型 typeof()
      • 查看数据长度 length()
      • 检查特定数据类型
    • 向量的命名
  • Lists(列表)
    • 创建列表
    • 查看列表的结构
    • 列表的命名

R语言语法

前面我们已经完成了RRStudio的安装,和一些简单的介绍。

现在我们把重点转向使用RStudio进行实际的编程应用。

首先分享在RStudio中使用R编程的基础知识。

然后我们将继续在RStudio中编码。

我们将讨论执行计算的语法以及所有代码的标准和命名约定。

当你在学习一项新技能,你都应该从基础开始。用R编程也不例外。
你将会了解到R的一些基本概念,包括函数、注释、变量、数据类型、向量和管道。

其中一些术语可能你会有些熟悉。例如,在使用电子表格和SQL中都会使用过函数。函数是用于在R语言(或者Python,或者其他编程语言)中执行特定任务的可重用代码体。函数以函数名(如print或paste)开头,通常后跟括号中的一个或多个参数。参数是R语言中的函数运行所需要的信息。

下面我们开始输入一个函数(print)来开始我们的学习。

脚本文件的创建、保存、和修改名称

首先打开RStudio(后面所有的代码练习等都是在RStudio中运行),之后新建一个脚本文件来编写和保存代码。点击左上角菜单栏的 File → New File → R Script ,创建的脚本文件。
在这里插入图片描述

创建完成之后,默认的名称为 Untited1。

在这里插入图片描述

如果想要自定义文件名称,这时候我们可以按快捷键 Ctrl + s 来先保存这个脚本文件,可以自己找个位置把脚本保存起来,还可以变更文件的名字。

在这里插入图片描述

当文件保存过之后,还想要修改文件名称,这时候就直接在文件名称的位置点击鼠标右键,就会有修改名称的选项了。
(在刚创建还没有保存脚本的时候是不能这样修改文件名称的)

在这里插入图片描述

第一个函数

当创建好脚本文件之后。现在我们只需要在文件中添加代码字符然后让程序运行。
在脚本中输入 print("这是一个函数") ,然后点击 Run 来运行代码。(需要选中全部需要执行的代码,否则会执行光标所在的一行或者最后一行)
在下面控制台区域就会显示输出效果。

在这里插入图片描述
这就完成了一个函数的使用(也是代码输入和运行的流程)。

使用帮助功能查看函数详细说明

其实不同的函数有不同的用法,如果你想了解一个函数的更多信息,可以使用帮助功能。

帮助功能其实是一个很有用的功能,在你不太清楚这个函数的用法时可以使用帮助功能来查看函数的详细说明,在说明中会介绍函数的用法,需要的参数说明,还有使用的例子等。

使用帮助功能来查看函数信息有两种操作方法:

第一种: 使用 ?+ 函数() 来获取帮助信息:
如查看print()函数的详细信息,输入 ?print() 点击运行,这时候在右下区域就会显示print()函数的详细信息。
在这里插入图片描述
第二种: 使用 help(print) 来获取帮助信息:
如查看print()函数的详细信息,输入 help(print) 点击运行。
在这里插入图片描述

两种帮助的区别就是一个需要输入函数名成和() 另一个只需要输入函数名字就可以了,根据个人习惯使用哪一种都没问题。

语法问题

在R语言中,函数是区分大小写的,比如前面的print()函数,如果把首字母大写,就会识别为不同的函数,如果没有这个函数就会报错。
在这里插入图片描述
所以使用函数的时候一定要注意大小写

变量与赋值

变量也可以被称为对象。
变量可以用来表示一些值(信息数据),方便在任何需要的时候调用。在R中命名变量时,可以使用简短的短语。

定义变量名称格式

  • 变量名应该以字母开头,可以包含数字和下划线。
    比如:5house 以数字开头的样子是不行的,如果改写为 house5 是OK的。
  • 变量名也区分大小写,建议定义变量的时候使用小写字母。
  • 在R 语言中 一般使用 <- 来为变量赋值,也可以用 = 来为变量复制(用=赋值有时候会报错。。。不过比较少)。
  • 在定义变量名称的时候尽量有一定的意义,最好不要就随便的a,b,c,d这样来。

举个例子:
比如定义一个房子house_price_1的价格为10000。当变量设置成功后,在右上环境区域会显示定义储存过的变量名称以及变量的值
在这里插入图片描述

调用变量

当我们定义好了一个变量后该如何使用他呢?
其实很简单,直接在代码中输入变量的名称就行了,在代码执行的时候会自动去调用函数所储存的值。

举个例子:前面定义了一个房子的价格 house_price_1,现在我们需要知道这个房子打7折的时候是多少钱,那么我们需要输入 house_price_1*0.7 来计算70%的价格为多少。
在这里插入图片描述
可以看到执行结果为7000,程序调用了函数中的值来去计算。

好了一些基本操作就介绍到这里,下面就开始提升难度。。。。


R中的数据结构

在程序设计中,数据结构是一种组织和存储数据的格式。理解数据结构非常重要,因为在使用R进行数据分析时,你将经常使用它们。

R编程语言中最常见的数据结构包括:

  • Vectors
  • Data frames
  • Matrices
  • Arrays

下面,将介绍向量和列表的基本属性,以及如何使用R代码创建它们。

Vectors (向量)

向量是一组相同类型的数据元素,存储在R中的序列中。不能拥有既包含逻辑和数字的向量,同向量中的数据类型是相通的。

向量有六种主要类型 :

  • 逻辑向量
  • 整数向量
  • 双精度向量
  • 字符向量(包含字符串)
  • 复杂向量和原始向量

最后两种:复杂向量和原始向量——在数据分析中并不常见,因此我们重点讨论前四种整数向量双精度向量一起被称为数值向量,因为它们都包含数字。下表总结了四种主要类型:

格式描述样例
LogicalTrue/FalseTRUE
Integer正整数和负整数5
Double十进制值18.359
Character字符串和字符值“R语言”

这四种主要向量类型之间的关系层次结构:

在这里插入图片描述

创建向量

创建向量的一种方法是使用c()函数(称为“combine”函数)。R中的c()函数将多个值组合成一个向量。在R语言中,这个函数只是字母“c”,后面跟着你想要的向量中的值,用逗号分隔:c(x, y, z,…)

可以使用c()函数将数字数据存储在向量中。


# 创建数字向量
c(3.5 , 5.1 , 201.133.6)

c(2.5, 48.5, 101.5)

要使用c()函数创建整数向量,必须将字母“L”直接放在每个数字后面。


# 创建整数类向量
c(3L,11L,13L)

c(1L, 5L, 15L)

还可以创建字符类型的向量逻辑类型的向量


# 创建字符类向量
c("Jack" , "老王" , "Sara")

# 创建逻辑类向量
c(FALSE, FALSE, TRUE)

在这里插入图片描述

查看向量的性质

创建的每个向量都有两个关键属性: 类型长度

查看数据类型 typeof()

你可以使用typeof()函数来查看向量的数据类型。将向量的代码放在函数的括号内。运行这个函数时,R就会输出这个向量的类型。

# 查看向量的数据类型
typeof(c("Jack" , "老王" , "Sara"))

#> [1] "character"
上面的例子中typeof()函数的输出是" character "字符型数据。同样的,如果你把向量换为别的数据类型,那么输出的就会变为对应的数据类型

# 查看向量的数据类型
typeof(c(FALSE, FALSE, TRUE))

在这里插入图片描述

查看数据长度 length()

通过使用length()函数,可以确定现有向量的长度——即包含的元素数量。

举个例子,我们先用赋值操作符将vector赋值给变量x,然后对该变量应用length()函数。当我们运行这个函数时,R会返回这个向量的长度值为3


# 查看数据长度
x = c("Jack" , "老王" , "Sara")
length(x)

在这里插入图片描述

检查特定数据类型

还可以通过使用is函数来检查向量是否为特定类型:

  • is.logical() – 逻辑类型
  • is.double() – 浮点数值类型
  • is.integer() – 整数类型
  • is.character() – 字符类型
    例如,使用 is.character() 来检查 c("Jack" , "老王" , "Sara") ,返回结果为TRUE。因为这个向量确实是字符类型数据。
# 检查数据类型
x = c("Jack" , "老王" , "Sara")
is.character(x)

在这里插入图片描述
下面换用其他的来检查同样一个向量数据c("Jack" , "老王" , "Sara"),其他三个都范围的值为否定的FALSE


# 查看数据类型
x = c("Jack" , "老王" , "Sara")

#是否为逻辑类型数据
is.logical(x)
# 是否为整数型数据
is.integer(x)
# 是否为浮点型数据
is.double(x)


在这里插入图片描述

向量的命名

所有类型的向量都可以命名。名称对于编写可读代码和描述r中的对象非常有用。您可以使用names()函数命名向量的元素。

举个例子,让我们将向量name赋值给一个包含三个元素的新向量age,可以使用names()函数为vector的每个元素分配不同的名称。


# 向量命名
# 定义两组向量数据
name <- c("Jack" , "老王" , "Sara")
age <- c(33,23,26)

# 为向量age中的数据命名
names(age) <- name

# 输出向量age
age

在这里插入图片描述
当您运行代码时,R显示向量age的第一个元素命名为Jakc,第二个元素命名为老王,第三个元素命名为Sara

需要注意,向量只能包含相同类型的元素。
如果希望在同一数据结构中存储不同类型的元素,可以使用列表。

Lists(列表)

创建列表

列表不同于原子向量,因为它们的元素可以是任何类型,如日期、数据帧、向量、矩阵等。列表甚至可以包含其他列表。

您可以使用list()函数创建一个列表。与c()函数类似,list()函数只是一个列表,后面跟着括号内列表中想要的值:list(x, y, z,…)

举个例子:
我们创建了一个包含四种不同类型元素的列表:字符(“老王”)整数(10L)双精度数(3.2)逻辑(TRUE)

# List 列表
# 创建列表
list("老王",10L,3.2,TRUE)

在这里插入图片描述

而且,列表可以包含其他列表。我们甚至可以将列表存储在列表中的列表中,以此类推。

# List 列表
# 创建列表
list(list(list("老王",10L,3.2,TRUE)))

在这里插入图片描述

查看列表的结构

如果想知道列表包含什么类型的元素,可以使用str()函数。只需要将列表的代码放在函数的圆括号内。当运行该函数时,R将通过描述列表的元素及其类型来显示列表的数据结构。

举个例子:
程序会返回列表的长度,还有每个数据的数据格式。

# List 列表
# 查看列表中数据的数据类型
str(list("老王",10L,3.2,TRUE))

在这里插入图片描述

让我们再来使用str()函数查看多个嵌套的列表是的结构。

首先,让我们将列表赋值给变量x,以便在str()函数中更容易输入。让我们运行这个函数。


# List 列表
# 查看列表中数据的数据类型
x <- list(list(list("老王",10L,3.2,TRUE)))

str(x)


在这里插入图片描述

$符号的缩进反映了该列表的嵌套结构。这里有三个层次(所以列表中的列表中有一个列表)。哈哈有点绕了

列表的命名

和向量一样,列表也可以命名。当用list()函数创建列表时,你就可以给它的元素命名:

# List 列表命名
list("老王"= 33,"身高"=10L,"视力" = 3.2)

在这里插入图片描述

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

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

相关文章

Elasticsearch 核心技术(十):GEO 地理查询(geo_bounding_box、geo_distance、geo_shape)

❤️ 博客主页&#xff1a;水滴技术 &#x1f680; 支持水滴&#xff1a;点赞&#x1f44d; 收藏⭐ 留言&#x1f4ac; &#x1f338; 订阅专栏&#xff1a;大数据核心技术从入门到精通 文章目录 一、地理数据类型1.1、geo_point 地理点类型1.1.1、创建一个含有 geo_point 字…

opencv_c++学习(八)

一、两张图像的像素比较 比较最大最小 最小&#xff1a; min(lnputArray src1, InputArray src2, outputArray dst)最大&#xff1a; max(lnputArray src1, InputArray src2, outputArray dst)src1 :第一个图像矩阵&#xff0c;可以是任意通道数的矩阵。 src2:第二个图像矩…

电源电压过冲

前言&#xff1a; 前段时间突然想起来以前的一个问题&#xff0c;这个问题相信大家也都遇到过&#xff0c;甚至是解决过&#xff0c;或者没解决&#xff0c;也就不了了之&#xff0c;今天这篇文章&#xff0c;主要来讲下这个问题&#xff0c;看完喜欢的欢迎给我留言或者点赞&a…

【Linux】常见指令

&#x1f307;个人主页&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;别人可以拷贝我的模式&#xff0c;但不能拷贝我不断往前的激情 &#x1f6f8;C专栏&#xff1a;Linux修炼内功基地 家人们更新不易&#xff0c;你们的&#x1f44d;点赞&#x1f44d;和⭐关注⭐…

EasyYapi插件—快速生成API接口文档

EasyYapi插件—快速生成API接口文档 1. 功能 导出http到&#xff08;Controller注解类&#xff09; YapiPostmanmarkdown导出RPC到 YapimarkdownCall api调用API接口 注意点&#xff1a; 注释中可以使用module标注模块所属的模块。表示接口会发布到yapi模块下&#xff1b;只…

生存分析利器:Python 中的 Kaplan-Meier Fitter 类详解

KaplanMeierFitter是lifelines库中用于计算生存分析的一个类。使用KaplanMeierFitter类&#xff0c;我们可以对我们的数据进行不同组之间的生存分析&#xff0c;比如根据年龄、性别、治疗手段等分类变量进行分组分析。 该类包含许多方法和属性&#xff0c;其中最常用的是fit()…

FPGA复位信号设计讨论

复位概述 复位作为电子系统中最常见的信号同时也是最重要的信号&#xff0c;它对工程师整体的设计表现有着极大的影响。复位信号可能深刻影响设计的性能表现&#xff0c;功耗&#xff0c;面积等等。对于一个优秀的系统设计&#xff0c;很难不把复位信号当成一个关键信号来设计。…

【车载基础软件 |ASF中间件 系列二】— 国产汽车生态平台ASF的生态框架

本文主要介绍国产基础软件开发平台架构下基于ASF的生态框架。 背景信息 随着E/E架构演进,从最初传统的分布式架构,由独立功能的ECU通过CANLIN等高实时性 总线通讯。诼渐演进到当前分域集中式结合车联网功能的结构,车载以大网逐渐步入了整车电子电器架构之中,除了高实时性…

【AIGC使用教程】论文阅读神器 SciSpace 从注册到体验

欢迎关注【AIGC使用教程】 专栏 【AIGC使用教程】论文阅读神器 SciSpace 从注册到体验 【AIGC使用教程】Microsoft Edge/Bing Chat 注册使用完全指南 【AIGC使用教程】GitHub Copilot 免费注册及在 VS Code 中的安装使用 【AIGC使用教程】GitHub Copilot 免费注册及在 PyCharm …

golang第一个简单项目实战+源码(gin+gorm)

创建项目并新建包 点击file->settings->GOPATH&#xff0c;把当前项目加进GOPATH目录中&#xff0c;然后点击apply&#xff0c; 点击加号完成之后&#xff0c;在左边选择go build 新建数据库 编写配置信息 这里将数据的信息都写在了配置文件里面 dns的内容为&#x…

二叉树概念结构,以及画图加代码分析二叉树遍历,创建,销毁,层序遍历,判断是否完全二叉树等等

二叉树 树的概念及结构树的概念树的相关概念树的表示 二叉树的概念及结构概念特殊的二叉树二叉树性质二叉树的存储结构 二叉树的实现二叉树顺序结构的实现二叉树链式结构的实现二叉树的遍历前序遍历中序遍历后序遍历 二叉树结点数量叶子结点数量求树高求k层结点数量 二叉树创建…

SpringMVC第一阶段:SpringMVC的介绍和使用

1、SpringMVC的概述 Spring MVC框架是一个开源的Java平台&#xff0c;为开发强大的基于JavaWeb应用程序提供全面的基础架构支持&#xff0c;并且使用起来非常简单容易。 Spring web MVC框架提供了MVC(模型 - 视图 - 控制器)架构&#xff0c;用于开发灵活和松散耦合的Web应用程…

【原创】创建Vue3 ts项目

文章目录 创建Vue3 ts项目工作空间创建vue 项目进入项目目录启动项目 & 停止项目访问成功 创建Vue3 ts项目 工作空间 进入工作空间目录&#xff1a;D:\workspace\vue 创建vue 项目 vue create vt #创建vt项目vue test 选择手动进行配置&#xff1a; 选中下面几个核心…

利用 Mybatis-Plus 的动态数据源实现多数据源配置

目录 一、导入依赖 二、Application.yaml配置文件 三、切换数据源 四、其他方法 4.1 配置多个数据源 4.2 定义Datasource和EntityManager 4.3 在需要使用数据源的地方注入不同的EntityManager 官网&#xff1a;https://baomidou.com/pages/a61e1b/#dynamic-datasource …

vue2实现路由跳转后隐藏底部固定导航栏Tabber的一种方式

在使用vue路由的时候&#xff0c;跳转到某些页面上是不需要展示底部固定的导航栏的&#xff0c;所以在某些特定的页面跳转时候&#xff0c;就需要隐藏底部的导航栏 这里用了一种方式去解决这个问题 1、前提 这里我把底部导航栏做了一个组件的封装&#xff0c;然后在App.vue里…

玩转 LLMs 之基础设施「利刃出鞘」

LLMs 时代已经到来&#xff0c;这个由 ChatGPT 开始的全球化技术浪潮&#xff0c;所经之处&#xff0c;风起云涌。LLMs 之于当下&#xff0c;更像是 iOS 、Android 之于移动互联网时代。开发者沸腾&#xff0c;投资机构争抢&#xff0c;与赛道相关的基础设施建设自然也成为整个…

IOC容器中的核心容器ApplicationContext

文章目录 1 环境准备2 容器2.1 容器的创建方式2.2 Bean的三种获取方式2.3 容器类层次结构2.4 BeanFactory的使用 前面已经完成bean与依赖注入的相关知识学习&#xff0c;接下来我们主要学习的是IOC容器中的核心容器。 这里所说的核心容器&#xff0c;大家可以把它简单的理解为…

聊聊我在三家IT公司的工作经历,C++程序员都在做什么?

我想分享一些关于C程序员工作的经验。我先自我介绍一下&#xff1a;我是一名毕业于普通985大学的程序员&#xff0c;已经工作了5年&#xff0c;但是我曾在三家互联网公司工作过&#xff0c;这些公司都还算是比较有名的互联网公司。 好了&#xff0c;不多说了&#xff0c;进入正…

真题详解(自顶向下)-软件设计(七十六)

真题详解&#xff08;传引用&#xff09;-软件设计&#xff08;七十五)https://blog.csdn.net/ke1ying/article/details/130695214 计算机软件著作权&#xff0c;正确的是_____。 非法进行拷贝、发布或更改软件的人被称为软件盗版者 循环冗余CRC校验&#xff0c;设数据位为k位…

KVM网络管理-创建桥接网络

KVM网络管理-创建桥接网络 分类 网络&#xff1a; nat isolated 接口&#xff1a; bridge 虚拟交换机&#xff1a; linux-bridge(linux) ovs(open-Vswitch) NAT网络拓扑图 仅主机模式网络拓扑图 桥接模式网络拓扑图 在Linux主机上开启vm1&#xff0c;从交换机上把…