【R语言数据类型】深入了解 向量、矩阵、数据框、列表

2024-09-07 07:38

本文主要是介绍【R语言数据类型】深入了解 向量、矩阵、数据框、列表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

R语言数据类型有向量、矩阵、数据框、列表。下面我们来深入了解下:

  • vector 的划分
    R中的vector分为两类,atomic和list,二者的区别在于,前者元素类型必须相同,后者可以不同。前者的代表是向量和矩阵,后者的代表是list和数据框。

创建向量、矩阵、数据框、列表

# atomic
a <- 1:5
b <- letters[1:5]
c <- 1:10
mat <- matrix(c,nrow=2)# list
l <- list(a,b,c)
df <-data.frame(a,b)

结果:

> a
[1] 1 2 3 4 5
> b
[1] "a" "b" "c" "d" "e"
> c[1]  1  2  3  4  5  6  7  8  9 10
> > mat[,1] [,2] [,3] [,4] [,5]
[1,]    1    3    5    7    9
[2,]    2    4    6    8   10
> l
[[1]]
[1] 1 2 3 4 5[[2]]
[1] "a" "b" "c" "d" "e"[[3]][1]  1  2  3  4  5  6  7  8  9 10> dfa b
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e
> 
  • is.vector
    由于它们都是vector,所以用is.vector检验无法区分向量和列表。当然,也无法用as.vector将列表转换成向量。
is.vector(a) # TRUEis.vector(l) # TRUEas.vector(l) # 仍然是list,,没有改变is.vector(mat) # FALSEis.vector(df) # FALSE

大家可能注意到了,同样是vector,矩阵和数据框用is.vector检验就返回的是FALSE,这说明is.vector也不是检验vector的,它的真正原理在于,检查是否最多只有一个属性:name。即查看其属性,如果没有属性或者只有一个name属性,才返回TRUE。

attributes(l)  # NULLattributes(a) # NULLattributes(df) # 多个属性names row.names classattributes(mat) #只有一个dimis.vector的这个功能我现在也不知道有什么用,写在这里只是让大家知道,不要乱用。

要想将list转换成向量,可以用unlist函数

unlist(l)as.atomic(l) # 报错,没有这个函数as.list(a) # as.list函数是有的

as.vector的作用也不是把除了names以外的属性全部删掉,它的作用是,当作用对象是atomic时,去除它的所有属性,如果是list则没改变,用is.vector检验也返回FALSE。我们有时用unlist转换后得到的向量是自带名字的,如果不去掉会造成一些麻烦,所以as.vector的一个作用是去除向量的名字属性。

# as.vector作用于list无效
vdf <- as.vector(df)attributes(vdf) # 属性没有改变is.vector(vdf) # FALSE# 转化数据框后向量带有名字
(udf <- unlist(df))attributes(udf) # 只有一个names属性vudf <- as.vector(udf)attributes(vudf) # NULL# 自己创建带有名字的向量
aaa <- c(1,2,3)attr(aaa,"names")<-letters[1:3]aaaas.vector(aaa)as.numeric(aaa) # 数值型向量去掉名字还有这种方法bbb <- c(letters[4:6])attr(bbb,"names")<- letters[1:3]bbbas.vector(bbb)

这篇关于【R语言数据类型】深入了解 向量、矩阵、数据框、列表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144475

相关文章

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用

Mysql如何将数据按照年月分组的统计

《Mysql如何将数据按照年月分组的统计》:本文主要介绍Mysql如何将数据按照年月分组的统计方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mysql将数据按照年月分组的统计要的效果方案总结Mysql将数据按照年月分组的统计要的效果方案① 使用 DA

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,