当前位置: 首页 > news >正文

R语言学习笔记--列表list、数据框

列表

1-列表

列表可以包含不同类型的对象,也就是说,列表不是将某些具体的值组织起来,而是组织R对象。列表将数据组织在一个一维集合中。

列表非常好用,因为它可以装任何类型的对象,不要求数据之间是同质的。

创建列表

list()

> list1 <- list(100:130, "R", list(TRUE, FALSE))
> list1
[[1]][1] 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
[18] 117 118 119 120 121 122 123 124 125 126 127 128 129 130[[2]]
[1] "R"[[3]]
[[3]][[1]]
[1] TRUE[[3]][[2]]
[1] FALSE

 以上代码,创建了一个列表,其中第一个元素是一个长度为31的数值型向量,第二个元素是一个长度为1的字符串,而第三个元素是一个长度为2的新列表。list函数创建列表的方式与c函数创建向量的方式相似,不同的元素使用逗号分开。

解释上述的输出结果:双中括号索引,如[[1]]表示展示的内容来自列表的第一个元素。单中括号索引,表示在其之后显示的内容来自列表某元素的哪一个子元素。例如,100是该列表抵押给元素的第一个子元素。"R"是列表第二个元素的第一个子元素。

2-从列表中提取成分的内容

列表中的每个成分是一个对象,比如向量、数据框、矩阵、列表

  1.  使用$,通过成分名字来提取该成分下的内容;
  2. 使用双括号,例如[[n]]来提取第n个成分的内容。这里n可以是索引或者成分名字。

以下是具体的例子:

> lst <- list(numbers = c(1,2), logical = TRUE, strings = c("a", "b", "c"))
> lst
$numbers
[1] 1 2$logical
[1] TRUE$strings
[1] "a" "b" "c"> lst[[1]]
[1] 1 2
> lst$numbers
[1] 1 2

3-提取列表子集

列表子集:从列表中提取多个成分及内容,得到的是列表,可以使用一个括号[ ]来提取列表子集。在[ ]中可以用字符向量表示成分名称,用数值向量表示成分位置, 或者用逻辑向量指定是否选择来提取列表成分。

> lst <- list(numbers = c(1,2), logical = TRUE, strings = c("a", "b", "c"))
> lst
$numbers
[1] 1 2$logical
[1] TRUE$strings
[1] "a" "b" "c"
> lst[1]
$numbers
[1] 1 2

数据框-data.frame

1-数据框

数据框可以看作类似是EXCEL表,各列数据类型允许不同,每一列数据类型相同。在R中数据框那个是特殊的列表,其每个列表元素都是一个长度相同的向量

函数data.frame()可以生成数据框,只适合小数据场景,数据量比较大的时候,建议将数据导入到R中。

> d <- data.frame(
+   name=c("李明", "张聪", "王建"),
+   age=c(30, 35, 28),
+   height=c(180, 162, 175),
+   stringsAsFactors=FALSE)
> print(d)name age height
1 李明  30    180
2 张聪  35    162
3 王建  28    175

 data.frame()函数会将字符型列转换成因子,加选项stringsAsFactors=FALSE可以避免这样的转换。

2-数据框内容访问

访问第二列,是一个向量:d[[2]],d[["age"]], d[,2], d[, "age"] (注:后面两种做法与tibble不兼容,应避免使用)

> d[,"age"]
[1] 30 35 28
> d[[2]]
[1] 30 35 28
> d[["age"]]
[1] 30 35 28
> d[,2]
[1] 30 35 28
> d[,"age"]
[1] 30 35 28

访问数据框的第二个元素,此时把数据框当作列表来看,返回的结果仍是一个数据框。

> d[2]age
1  30
2  35
3  28
> d["age"]age
1  30
2  35
3  28
> class(d[2])
[1] "data.frame"

数据框-tibble

数据框-tibble

数据框是一个随着R语言前身S语言继承下来的概念,现在已经有一些不足之处,tibble包提供了tibble类,这是数据框的一个改进版本。

Hadley在tibble包中引入了一种tibble数据框,以代替data.frame,并且tidyverse包都是基于tibble数据框的。

创建数据框tibble,注只适应于数据量比较小的情况。

  1. 若干列向量创建tibble;
  2. 按行录入数据的方式创建tibble。
> t.bp <- tibble(
+   `序号`=c(1,5,6,9,10,15),
+   `收缩压`=c(145, 110, "未测", 150, "拒绝", 115))
> t.bp
# A tibble: 6 × 2序号 收缩压<dbl> <chr> 
1     1 145   
2     5 110   
3     6 未测  
4     9 150   
5    10 拒绝  
6    15 115   
> t.bp2 <- tribble(
+   ~`序号`,~`收缩压`,
+   1,145,
+   5,110,
+   6,NA,
+   9,150,
+   10,NA,
+   15,115
+ )
> t.bp2
# A tibble: 6 × 2序号 收缩压<dbl>  <dbl>
1     1    145
2     5    110
3     6     NA
4     9    150
5    10     NA
6    15    115

注意:tribble() 中数据每行末尾也需要有逗号,最后一行末尾没有逗号。

tibble比数据框好的地方:

  1. tibble 与数据框的一大区别是在显示时不自动显示所有内容,这样可以避免显示很大的数据框将命令行的所有显示都充满。
  2. tibble 在生成或输入时不自动将字符型列转换为因子。

数据框内容访问:

双中括号,访问元素的内容;

单中括号,访问数据框子集。

> t.bp2[[1]]
[1]  1  5  6  9 10 15
> t.bp2[1]
# A tibble: 6 × 1序号<dbl>
1     1
2     5
3     6
4     9
5    10
6    15

总结数据框和列表的访问:

由于数据框是特殊的列表,所以二者可以使用一套访问方法,即

  • 单中括号访问子集;
  • 双中括号访问元素内容;

参考:

  1. R语言入门与实践--冯凌秉译
  2. Rbook_PKU_李东风
  3. R语言编程-张敬信

相关文章:

R语言学习笔记--列表list、数据框

列表 1-列表 列表可以包含不同类型的对象&#xff0c;也就是说&#xff0c;列表不是将某些具体的值组织起来&#xff0c;而是组织R对象。列表将数据组织在一个一维集合中。 列表非常好用&#xff0c;因为它可以装任何类型的对象&#xff0c;不要求数据之间是同质的。 创建列…...

电磁波定义、特性以及信道相关知识

文章目录 前言一、电磁波的定义、特性、波谱1、电磁波的特性2、电磁波谱的划分及用途 二、地球大气层的结构三、电磁波的传播方式1、地波&#xff08;ground-wave&#xff09;2、天波&#xff08;sky-wave&#xff09;3、视线传播&#xff08;line-of-sight&#xff09;①、相关…...

TCP KeepAlive与HTTP Keep-Alive

TCP KeepAlive与HTTP Keep-Alive TCP KeepAliveHTTP Keep-AliveTCP服务器怎么检测客户端断开连接 TCP KeepAlive TCP连接建立之后&#xff0c;如果应用程序或者上层协议一直不发送数据&#xff0c;或者隔很长时间才发送一次数据&#xff0c;那么TCP需要判断是应用程序掉线了还…...

SkyWalking链路追踪-Agent (代理人)

基础概念&#xff1a; SkyWalking链路追踪代理&#xff08;SkyWalking Tracing Agent&#xff09;是一种用于收集和传输链路追踪数据的工具。它与应用程序一起部署&#xff0c;并通过自动或手动方式来收集关于应用程序中的请求路径和操作的信息。该代理将收集到的数据发送到Sky…...

多线程案例 | 单例模式、阻塞队列、定时器、线程池

多线程案例 1、案例一&#xff1a;线程安全的单例模式 单例模式 单例模式是设计模式的一种 什么是设计模式&#xff1f; 设计模式好比象棋中的 “棋谱”&#xff0c;红方当头炮&#xff0c;黑方马来跳&#xff0c;针对红方的一些走法&#xff0c;黑方应招的时候有一些固定的…...

C++文件操作

1.写文件 //文件操作 #include<fstream> int main() {//写文件//路径 -- 此路径没有就生成给文件 string filePath R"(E:\项目\test.txt)";//打开文件 ios::app在后面追加内容 啥也不跟是覆盖写入ofstream fout(filePath, ios::app);//检查是否打开成功if (…...

overleaf(latex) 公式过大,需要调小字体,同时公式编号字体不变的方法

提问&#xff1a;用latex编辑的双列排版的论文中&#xff0c;如果一个包含矩阵的公式中&#xff0c;矩阵过大&#xff0c;导致超出列的范围&#xff0c;一般该如何调整呢&#xff1f; 回答&#xff1a;如果你在LaTeX中的双列排版中遇到了一个矩阵过大而导致超出列范围的问题&a…...

flink采用thrift读取tablets一个天坑

原先的配置 [INFO] StarRocksSourceBeReader [open Scan params.mem_limit 8589934592 B] [INFO] StarRocksSourceBeReader [open Scan params.query-timeout-s 600 s] [INFO] StarRocksSourceBeReader [open Scan params.keep-alive-min 100 min] [INFO] StarRocksSourceBeRea…...

Android 面试题 异常捕获 四

&#x1f525; 为什么要捕获奔溃 &#x1f525; 因为在开发或者测试阶段不能做到100%的问题解决&#xff0c;因为 app 上线之后会有你想不到的各种各样的使用的场景&#xff0c;而发生问题时用户只能描述一下怎么怎么怎么就出现了问题。也许反馈到开发这边可以100%复现那就可以…...

自动化测试:让软件测试更高效更愉快!

谈谈那些实习测试工程师应该掌握的基础知识&#xff08;一&#xff09;_什么时候才能变强的博客-CSDN博客https://blog.csdn.net/qq_17496235/article/details/131839453谈谈那些实习测试工程师应该掌握的基础知识&#xff08;二&#xff09;_什么时候才能变强的博客-CSDN博客h…...

SpringCloud学习—Feign负载均衡

Feign简介 Feign是声明式Web Service客户端&#xff0c;它让微服务之间的调用变得更简单&#xff0c;类似controller调用service。SpringCloud集成了Ribbon和Eureka&#xff0c;可以使用Feigin提供负载均衡的http客户端 只需要创建一个接口&#xff0c;然后添加注解即可。使用…...

5G时代的APP开发:机遇与挑战

APP开发是互联网行业中的重要组成部分&#xff0c;随着5G时代的到来&#xff0c;移动 APP开发也迎来了新的机遇和挑战。 5G时代不仅会为移动 APP开发带来新的发展机遇&#xff0c;也会给移动 APP开发带来新的挑战。对于企业和开发者而言&#xff0c;5G时代带来的机遇和挑战是并…...

Python基础入门教程(上)

目录 一、你好Python 1.1、Python安装 win版 Linux版 1.2、第一个Python程序 二、Python基本语法 2.1、字面量 2.2、注释 2.3、变量 2.4、数据类型 type()函数 字符串类型的不同定义方式 2.5、数据类型转换 ​编辑 2.6、标识符 2.7、运算符 2.8、字符串扩展 …...

【环境配置】Windows下WSL将ubuntu挪位置-系统盘清理

问题–垃圾太多&#xff0c;系统盘空间占用太大 最近 C 盘空间暴涨&#xff0c;用工具 WinDirStat-强烈推荐的工具 查看发现 WSL 子系统占用了6个多 G 的空间&#xff0c;遂想办法挪个位置&#xff1b; 【关键字】将 Windows 里的子系统挪到非系统盘 D 盘&#xff1b; 解决 打…...

【前端知识】React 基础巩固(三十三)——Redux的使用详解

React 基础巩固(三十三)——Redux的使用详解 Redux的使用详解 针对React 基础巩固&#xff08;三十二&#xff09;中的案例&#xff0c;我们希望抽取页面中共有的代码&#xff08;例如下方的代码&#xff09;&#xff0c;使用高阶组件统一拦截。 constructor() {super();this.…...

如何进行SQL优化

一、SQL优化的主要步骤 在应用的的开发过程中&#xff0c;由于初期数据量小&#xff0c;开发人员写 SQL 语句时更重视功能上的实现&#xff0c;但是当应用系统正式上线后&#xff0c;随着生产数据量的急剧增长&#xff0c;很多 SQL 语句开始逐渐显露出性能问题&#xff0c;对生…...

docker 部署 mysql8.0 无法访问

文章目录 &#x1f5fd;先来说我的是什么情况&#x1fa81;问题描述&#x1fa81;解决方法&#xff1a;✔️1 重启iptables✔️2 重启docker &#x1fa81;其他有可能连不上的原因✔️1 客户端不支持caching_sha2_password的加密方式✔️2 my.conf 配置只有本机可以访问 &#…...

理解构建LLM驱动的聊天机器人时的向量数据库检索的局限性 - (第1/3部分)

本博客是一系列文章中的第一篇&#xff0c;解释了为什么使用大型语言模型&#xff08;LLM&#xff09;部署专用领域聊天机器人的主流管道成本太高且效率低下。在第一篇文章中&#xff0c;我们将讨论为什么矢量数据库尽管最近流行起来&#xff0c;但在实际生产管道中部署时从根本…...

IntersectionObserver实现小程序长列表优化

IntersectionObserver实现小程序长列表优化 关于 IntersectionObserver 思路 这里以一屏数据为单位【一个分页的10条数据&#xff0c;最好大于视口高度】&#xff0c; 监听每一屏数据和视口的相交比例&#xff0c;即用户能不能看到它 只将可视范围的数据渲染到页面上&#x…...

Nginx动静分离、资源压缩、负载均衡、黑白名单、防盗链等实战

一、前言 Nginx是目前负载均衡技术中的主流方案&#xff0c;几乎绝大部分项目都会使用它&#xff0c;Nginx是一个轻量级的高性能HTTP反向代理服务器&#xff0c;同时它也是一个通用类型的代理服务器&#xff0c;支持绝大部分协议&#xff0c;如TCP、UDP、SMTP、HTTPS等。 二、…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

DingDing机器人群消息推送

文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人&#xff0c;点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置&#xff0c;详见说明文档 成功后&#xff0c;记录Webhook 2 API文档说明 点击设置说明 查看自…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...

es6+和css3新增的特性有哪些

一&#xff1a;ECMAScript 新特性&#xff08;ES6&#xff09; ES6 (2015) - 革命性更新 1&#xff0c;记住的方法&#xff0c;从一个方法里面用到了哪些技术 1&#xff0c;let /const块级作用域声明2&#xff0c;**默认参数**&#xff1a;函数参数可以设置默认值。3&#x…...