当前位置: 首页 > 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等。 二、…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

Linux中《基础IO》详细介绍

目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改&#xff0c;实现简单cat命令 输出信息到显示器&#xff0c;你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...

DiscuzX3.5发帖json api

参考文章&#xff1a;PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下&#xff0c;适配我自己的需求 有一个站点存在多个采集站&#xff0c;我想通过主站拿标题&#xff0c;采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...