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

R语言基础(四):数据类型

R语言基础(一):注释、变量
R语言基础(二):常用函数
R语言基础(三):运算

5.数据类型

5.1 基本数据类型

R语言基本数据类型大致有六种:

整数Integer、浮点数Numeric、文本(字符串)Character、逻辑(布尔)Logical、复合类型Complex、原型Raw

其中整数和浮点数也可以归类为数字类型numeric。数字默认是浮点数double(小数),整数后面加上字母L才是整数。

字符串:单引号或双引号包裹起来,比如:“hello,world”、‘My name is MengLaoShi’

逻辑:也叫布尔型,只有TRUE和FALSE两个值。注意TRUE是布尔型,而’TRUE’是字符串

复合类型表示虚数,虚数单位是i

原型:是以一种二进制形式存储的数据

可以使用typeof()函数查看数据类型

> typeof(TRUE)
[1] "logical"
> typeof(2)  #数字中的浮点型
[1] "double"
> typeof(3L) #整数后面加一个L代表整数类型
[1] "integer"
> typeof(3+2i) #复合类型,虚数
[1] "complex"
> typeof("hello") #字符型
[1] "character"
> charToRaw("a")  #raw类型(原型)
[1] 61

字符串有一些常用的操作,

> a='hi'
> b='R'
> paste(a,b)  #连接字符串,默认空格
[1] "hi R"
> paste(a,b,sep=",")  #指定连接符
[1] "hi,R"
> nchar("Google")  #获取字符串长度
[1] 6
> toupper('a')  #转换大写
[1] "A"
> tolower('a')  #转换小写
[1] "a"
> substring('abcdefg',2,4)  #截取字符串
[1] "bcd"
> format(11.23456789, digits = 5)  #转成字符串,显示n位数,四舍五入
[1] "11.235"
> format(13.7, width = 6)  #转化成长度为6的字符串,左边补空格
[1] "  13.7"

5.2 对象类型【重点】

在这里插入图片描述

5.2.1 向量(vector)

R语言中的向量和数学中的向量类似,创建向量使用c()函数

> a=c(1,2)
> b=c(2,4)
> a+b   #向量加法
[1] 3 6 #对应位置的相加
> b[1]  #获取向量中的某个元素,索引从1开始
[1] 2
> a[4]  #索引超出范围
[1] NA

向量有些常用的函数

> a=c(4,8,6,2)
> sort(a) #排序(升序)
[1] 2 4 6 8
> order(a) #返回排序后的索引
[1] 4 1 3 2
> a[order(a)] #通过排序后的索引,拿到有序的向量
[1] 2 4 6 8
> rev(a) #反转原向量
[1] 2 6 8 4

如果生成连续序列的向量,可以使用如下形式:

> a=1:5
> a
[1] 1 2 3 4 5
> a=5:1
> a
[1] 5 4 3 2 1
> sum(a)  #向量中元素求和
[1] 15
> sum(1:5)#向量中元素求和
[1] 15
> mean(a) #向量中元素求平均值
[1] 3
> var(a)  #向量中元素求方差
[1] 2.5
> sd(a)	  #向量中元素求标准差
[1] 1.581139
> min(a)  #向量中元素求最小值
[1] 1
> max(a)  #向量中元素求最大值
[1] 5
> range(a)#向量中元素最大值和最小值(得一个二维向量)
[1] 1 5
> seq(1, 9, 2) #从1到9,方差为2的等差序列
[1] 1 3 5 7 9
> seq(0, 1, length.out=5) #指定0开始,1结束,共生成5个数的等差数列
[1] 0.00 0.25 0.50 0.75 1.00
> rep(0, 4)  #产生重复序列
[1] 0 0 0 0

5.2.2 因子(factor)

因子用于存储不同值的数据,创建因子使用 factor() 函数,向量作为输入参数。

> color_vector=c('红','黄','红','绿') #向量
> color_factor=factor(color_vector)  #生成因子
> color_factor
[1] 红 黄 红 绿 
Levels: 红 黄 绿   #不重复的

5.2.3 矩阵(matrix)

矩阵是一种二维行列的数据结构。

> m=matrix(c(1,2,3,4,5,6),2,3)  #把一个向量转变成2行3列的矩阵(按列填充)
> m[,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
> m=matrix(c(1,2,3,4,5,6),nrow=2,ncol=3) #把向量转变成2行3列的矩阵,同上
> m[,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
#把向量转变成2行3列的矩阵,先填充行
> m=matrix(c(1,2,3,4,5,6),2,3,byrow=TRUE) 
> m[,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
> m=matrix(c(1,2,3,4,5,6),nrow=2,ncol=3,byrow=TRUE) #同上
> m[,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
> m[1,2]  #通过坐标(索引)访问第1行第2个元素
[1] 2
> m[2,3]
[1] 6
> colnames(m) = c("x", "y", "z")  #给每一列起别名
> rownames(m) = c("a", "b")   #给每一行起别名
> mx y z
a 1 3 5
b 2 4 6

矩阵运算:

> m1=matrix(c(1:6),2,3)
> m2=matrix(c(5:10),2,3)
> m1[,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
> m2[,1] [,2] [,3]
[1,]    5    7    9
[2,]    6    8   10
> m1+m2[,1] [,2] [,3]
[1,]    6   10   14
[2,]    8   12   16
> m1*m2    #对应位置元素相乘[,1] [,2] [,3]
[1,]    5   21   45
[2,]   12   32   60
> m3=matrix(c(1:6),3,2)
> m3[,1] [,2]
[1,]    1    4
[2,]    2    5
[3,]    3    6
> m1 %*% m3   #数学中的矩阵相乘[,1] [,2]
[1,]   22   49
[2,]   28   64
> m4=matrix(1:4,2,2) #逆矩阵
> m4[,1] [,2]
[1,]    1    3
[2,]    2    4
> solve(m4)   #逆矩阵[,1] [,2]
[1,]   -2  1.5
[2,]    1 -0.5[,1] [,2]
[1,]    1    3
[2,]    2    4
> apply(m4, 1, sum)   #第二个参数为1按行操作,用 sum() 函数
[1] 4 6
> apply(m4, 2, sum)   #第二个参数为2按列操作
[1] 3 7

5.2.4 数组(array)

数组是一个多维结构,存储同一种类型的数据集合。向量可以看做一维数组,矩阵是二维数组。创建数组使用array()函数,参数是一个向量,默认是一维数组。

> a=array(1:5)  #一维数组
> a
[1] 1 2 3 4 5
> b=array(1:5,dim=c(3,4,2)) #每个矩阵3行4列,共2个矩阵(元素循环填充)
> b
, , 1[,1] [,2] [,3] [,4]
[1,]    1    4    2    5
[2,]    2    5    3    1
[3,]    3    1    4    2, , 2[,1] [,2] [,3] [,4]
[1,]    3    1    4    2
[2,]    4    2    5    3
[3,]    5    3    1    4
> b[3,2,1]  #第1个矩阵的第2列第3行的元素
[1] 1
> b[3,,1]   #第1个矩阵的第3行
[1] 3 1 4 2
> b[,3,1]   #第1个矩阵的第3列
[1] 2 3 4
> matrix1=b[,,1]  #取出第一个矩阵
> matrix1[,1] [,2] [,3] [,4]
[1,]    1    4    2    5
[2,]    2    5    3    1
[3,]    3    1    4    2

5.2.5 列表(list)

列表可以存放不同类型的数据,可以是数字、字符串、向量、另一个列表、矩阵、数组等

> alist <- list("Hello",  c(11,22,33), TRUE, 1:5, 119.1, array(5:10),matrix(1:6,nrow=2,ncol=3))
> alist
[[1]]
[1] "Hello"[[2]]
[1] 11 22 33[[3]]
[1] TRUE[[4]]
[1] 1 2 3 4 5[[5]]
[1] 119.1[[6]]
[1]  5  6  7  8  9 10[[7]][,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
> alist[1]  #访问列表元素
[[1]]
[1] "Hello"
> blist=list(3:4)  #将两个list合并
> clist=c(alist,blist)
> unlist(alist)   #列表转换为向量[1] "Hello" "11"    "22"    "33"    "TRUE"  "1"     "2"     "3"     "4"     "5"     "119.1" "5"     "6"     "7"     "8"     "9"     "10"    "1"     "2"     "3"     "4"     "5"     "6"   

5.2.6 数据框(data frame)

数据框(有的也叫数据帧)是特殊的二维表结构,有行列,每一列长度要一致,同一列的元素数据类型要相同(不同列可以不同),每一列都有唯一列名。

> table = data.frame(
+     姓名 = c("张三", "李四"),
+     工号 = c("001","002"),
+     月薪 = c(1000, 2000)
+ )
> table姓名 工号 月薪
1 张三  001 1000
2 李四  002 2000
> str(table)  #查看信息
'data.frame':   2 obs. of  3 variables:$ 姓名: chr  "张三" "李四"$ 工号: chr  "001" "002"$ 月薪: num  1000 2000
> names(table) #查看列名
[1] "姓名" "工号" "月薪"
> nrow(table)  #查看一共几行
[1] 2
> ncol(table)  #查看一共几列
[1] 3
> data=table(姓名,月薪)
Error in table(姓名, 月薪) : 找不到对象'姓名'
> data=data.frame(table$姓名,table$月薪)  #根据列名提取数据
> datatable.姓名 table.月薪
1       张三       1000
2       李四       2000
> data=table[2,1]   #读第2行第1列
> data
[1] "李四"
> data=table[c(1,2),c(2,3)]  #读1~2行的2~3列
> data工号 月薪
1  001 1000
2  002 2000
> table姓名 工号 月薪
1 张三  001 1000
2 李四  002 2000
> table$性别=c("男","男")  #添加一列
> table姓名 工号 月薪 性别
1 张三  001 1000   男
2 李四  002 2000   男
> newtable = data.frame(
+     姓名 = c("小明", "小白"),
+     工号 = c("101","102"),
+     性别 = c("男", "女"),
+     月薪 = c(5000, 7000)
+ )
> rbind(table,newtable)  #合并两个数据框姓名 工号 月薪 性别
1 张三  001 1000   男
2 李四  002 2000   男
3 小明  101 5000   男
4 小白  102 7000   女

相关文章:

R语言基础(四):数据类型

R语言基础(一)&#xff1a;注释、变量 R语言基础(二)&#xff1a;常用函数 R语言基础(三)&#xff1a;运算 5.数据类型 5.1 基本数据类型 R语言基本数据类型大致有六种&#xff1a; 整数Integer、浮点数Numeric、文本(字符串)Character、逻辑(布尔)Logical、复合类型Complex、…...

批处理命令--总结备忘「建议收藏」

批处理命令--总结备忘「建议收藏」 前言1、基础语法:2、批处理基本命令3、实例3.1 打开虚拟目录3.2 以当前时间为文件名,建文件夹3.3 备份postgresql数据库前言 最近用批处理命令做了一些postgresql数据库的备份,打开虚拟环境。。。发现批处理处理一些常用重复工作时真的很…...

面试知识点梳理及相关面试题(十一)-- docker

1. Docker和虚拟机的区别 容器不需要捆绑一整套操作系统&#xff0c;它只需要满足软件运行的最小内核就行了。 传统虚拟机技术是虚拟出一整套硬件后&#xff0c;在其上运行一个完成操作系统&#xff0c;在该系统上再运行所需应用进程容器内的应用进程直接运行于宿主的内核&am…...

k8s--services(微服务)

文章目录一、k8s网络通信service和iptables的关系二、services1.简介2.默认3.IPVS模式的service4.clusterip5.headless6.从外部访问service的三种方式&#xff08;1&#xff09;nodeport&#xff08;2&#xff09;loadbalancer7.metallb一、k8s网络通信 k8s通过CNI接口接入其他…...

【Java开发】设计模式 01:单例模式

1 单例模式介绍单例模式&#xff08;Singleton Pattern&#xff09;是Java中最为基础的设计模式。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象&#xff0c;同时确保只有单个对…...

10、go工程化与标准库

目录一、用go mod管理工程二、包引入规则三、init调用链四、可见性五、标准库1 - 时间函数2 - 数学计算3 - I/O操作4 - 编码一、用go mod管理工程 初始化项目&#xff1a;go mod init $module_name&#xff0c;$module_name和目录名可以不一样。上述命令会生成go.mod文件 mod…...

【Selenium自动化测试】鼠标与键盘操作

在 WebDriver 中&#xff0c;与鼠标操作相关的方法都封装在ActionChains 类中&#xff0c;与键盘操作相关的方法都封装在Keys类中。下面介绍下这两个类中的常用方法。 鼠标操作 ActionChains类鼠标操作常用方法&#xff1a; context_click()&#xff1a;右击double_click()&…...

自定义javax.validation校验枚举类

枚举类单一情况 package com.archermind.cloud.phone.dto.portal.external.validation.validator;import com.archermind.cloud.phone.dto.portal.external.validation.constraints.EnumValidation; import lombok.extern.slf4j.Slf4j;import javax.validation.ConstraintVali…...

[Java·算法·中等]LeetCode39. 组合总和

每天一题&#xff0c;防止痴呆题目示例分析思路1题解1分析思路2题解2&#x1f449;️ 力扣原文 题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target &#xff0c;找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0c;并以列表形…...

【Linux】vi和vim编辑器

目录主题主题 三种常见模式&#xff1a; 正常模式 以vim 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中&#xff0c;你可以使用[上下左右]按键来移动光标&#xff0c;你可以使用『删除字符』或『删除整行』来处理档案内容&#xff0c;也可以使用「复制、…...

BIO,NIO,AIO

IO模型 用什么样的通道进行数据传输和接收&#xff0c;java支持3种io网络编程模式 BIO NIO AIO BIO 同步阻塞 一个客户端连接对应一个处理线程 BIO示例代码&#xff08;客户端和服务端&#xff09; package com.tuling.bio;import java.io.IOException; import java.net.So…...

代码随想录刷题-数组-有序数组的平方

文章目录有序数组的平方习题暴力排序双指针有序数组的平方 本节对应代码随想录中&#xff1a;代码随想录&#xff0c;讲解视频&#xff1a;有序数组的平方_哔哩哔哩_bilibili 习题 题目链接&#xff1a;977. 有序数组的平方 - 力扣&#xff08;LeetCode&#xff09; 给你一…...

【玩转c++】stack和queue的介绍和模拟实现

本期主题&#xff1a;list的讲解和模拟实现博客主页&#xff1a; 小峰同学分享小编的在Linux中学习到的知识和遇到的问题小编的能力有限&#xff0c;出现错误希望大家不吝赐stack的介绍和使用1.1.stack的介绍1. stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上…...

Linux order(文件、磁盘、网络、系统管理、备份压缩)

1. Linux 文件命令 -rwxrwxrwx chmod&#xff1a;change mode&#xff0c;用于&#xff08;文件所有者或 root &#xff09;变更用户(u:owner g:group o:other a:all)的权限 chmod [OPTION]… MODE[,MODE]… FILE… OPTION -R&#xff1a;递归修改more option&#xff1a;chmod…...

最详细的CentOS7安装Mysql数据库服务

1.查看是否安装mysql: rpm -qa | grep mysql如果有查出来东西&#xff0c;使用命令删除&#xff1a; rpm -e xxx2.检查是否有mysql用户组和mysql用户,没有就添加有就忽略&#xff1a; groups mysql 添加用户组和用户 groupadd mysql && useradd -r -g mysql mysql&a…...

【IoT】项目管理:如何做好端到端的项目管理?

今天主要来谈谈项目管理这个话题。 首先来看一个我在网络上看到的一个关于项目管理的案例或者是段子。 将项目管理的作用及意义非常直观地展示了出来。 有一个植树搞绿化的企业&#xff0c;在公司内部设置有五个部门&#xff0c;分别是&#xff1a; 运输部门&#xff1b;挖坑部…...

渲染十万条数据就把你难住了?不存在的!

虚拟列表的使用场景如果我想要在网页中放大量的列表项&#xff0c;纯渲染的话&#xff0c;对于浏览器性能将会是个极大的挑战&#xff0c;会造成滚动卡顿&#xff0c;整体体验非常不好&#xff0c;主要有以下问题&#xff1a;页面等待时间极长&#xff0c;用户体验差CPU计算能力…...

编程学习的心路历程和困惑回顾

回首入行9年的经历&#xff0c;从大一开始学习C语言和数据结构&#xff0c;老师一直是在用IDE演示程序的编写和运行&#xff0c;我们也就一直在跟黑乎乎的命令行窗口打交道。 后来在一些课程的实验环节&#xff0c;接触到了一些别人编写好的工程代码&#xff0c;知道了Makefile…...

请介绍类加载过程,什么是双亲委派模型?

第23讲 | 请介绍类加载过程&#xff0c;什么是双亲委派模型&#xff1f; Java 通过引入字节码和 JVM 机制&#xff0c;提供了强大的跨平台能力&#xff0c;理解 Java 的类加载机制是深入 Java 开发的必要条件&#xff0c;也是个面试考察热点。 今天我要问你的问题是&#xff0…...

Navisworks编辑材质和Revit快速切换材质问题

一、如何在Navisworks2016中编辑材质 初次使用NW2016-2017时发现&#xff0c;原来用于创建编辑材质的小地球不见了&#xff0c;如图1所示&#xff0c;在各大技术群里求助没有回应&#xff0c;度娘搜索也总是摇头。 经过仔细排查可能出现的地方&#xff0c;终于找到了可以编辑材…...

Object对象键值的输出循序到底如何排列的?

1.日常摸鱼看八股 今天又是复习八股文的一天&#xff0c;发现还是彻底懂得原理才好和面试官吹牛批呀。 接着来看看我chat大宝贝的回答&#xff1a; 在现代浏览器中&#xff0c;Object 对象的键值输出循序是比较稳定的&#xff0c;通常是按照如下顺序输出&#xff1a; 所有的数…...

气泡式水位计的安装方法详解

气泡水位计的安装实际上就是气管的安装&#xff0c;气管的安装是否正确将直接影响到仪器测量数据的结果&#xff0c;气泡水位计它由活塞泵产生的压缩空气流经测量管和气泡室&#xff0c;进入被测的水体中&#xff0c;测量管中的静压力与气泡室上的水位高度成正比。那么接下来就…...

求“二维随机变量的期望E(X)与方差D(X)”例题(一)

离散型 设随机变量(X,Y)的联合分布律为 X\Y0100.10.210.30.4 (1)求E(X) 先求x的边缘分布律&#xff0c;表格里x0的概率为0.10.2&#xff0c;于是我们可得 X01P0.30.7直接求E(X)即可&#xff0c;得到结果 (2)求E(XY) 直接x与y相乘就行。 记得别乘多了&#xff0c;别的算了又…...

MySQL 搞定行转列,列转行

行转列方法总结1、使用case…when…then2、使用SUM(IF()) 生成列3、使用SUM(IF()) 生成列 WITH ROLLUP 生成汇总行4、使用SUM(IF()) 生成列 UNION 生成汇总行,并利用 IFNULL将汇总行标题显示为 Total5、使用SUM(IF()) 生成列&#xff0c;直接生成汇总结果&#xff0c;不再利用…...

正点原子裸机开发之C语言点灯程序

一. 简介 本文针对 IMX6ULL 的裸机开发的&#xff08;即不带Linux操作系统的开发&#xff09;。 主要分两部分的工作&#xff1a; 1. 配置 C语言运行环境 2. C 语言编写及运行 二. 配置C语言运行环境 配置 C 语言运行环境的工作分 三部分。如下&#xff1a; 1. 设置…...

cv::阈值分割OTUS原理+代码

opencv库的阈值分割分为全局分割和局部分割全局分割&#xff1a;普通分割ret1,th1 cv2.threshold(img,127, 255, cv2.THRESH_BINARY) #127为阈值 #cv2.THRESH_BINARY |cv2.THRESH_BINARY_INV | cv2.THRESH_TRUNC|cv2.THRESH_TOZERO|cv2.THRESH_TOZERO_INV局部分割&#xff1a;…...

Postgresql-12.5 visual studio-2022 windows 添加pg工程并调试

pg内核学习&#xff0c;记录一下 文章目录安装包编译安装VS添加Postgresql工程调试源码安装包 &#xff08;1&#xff09;perl下载 https://www.perl.org/get.html &#xff08;2&#xff09;diff下载 http://gnuwin32.sourceforge.net/packages/diffutils.htm &#xff08;…...

长沙学院2023 第一次蓝桥训练题解

每道题都在洛谷上&#xff0c;每个题都有很详细的题解&#xff0c;可以先自行做&#xff0c;不会再看题解。 题目解析思路都写在代码中&#xff0c;中文题面就不单独解释题意了。 P2440 木材加工&#xff08;二分答案&#xff09; 链接&#xff1a;P2440 木材加工 解析 代码…...

云端Docker搭建ABY库以及本地CLion使用

文章目录ABY的搭建以及使用前言ABY库的下载、安装及测试CLion配置后续杂项项目改名使用其他的库最后ABY的搭建以及使用 前言 仅做记录&#xff0c;仅供参考&#xff0c;不同人有不同的使用方式命令手敲&#xff0c;可能有错&#xff0c;自己辨识勿问&#xff0c;我懂的也不多…...

ES6-箭头函数、解构赋值、对象简写

箭头函数特点 1、 (只有1个形参) 可以省略() 2、 {} 可以省略 只有一句代码 或 只有返回值的时候,省略return 3、arguments 不可用&#xff0c;arguments在没有形参的时候可以拿到调用函数拿在的实参 获取伪数组通过Array.from转为真数组。 4、 箭头函数没有this&#xff0c; …...

国内建筑设计公司前十名/seo和sem的区别是什么

前言 在Python的类里面&#xff0c;所有属性和方法默认都是公共的&#xff1b;但Python也可以设置受保护、私有类型的变量or方法 受保护类型的变量、方法 一般称为&#xff1a;protected变量 #!/usr/bin/env python # -*- coding: utf-8 -*-class protected:_protected "…...

网站对联图片/吴忠seo

排队论 简介 排队论又称随机服务系统&#xff0c;它应用于一切服务系统&#xff0c;包括生产管理系统、通信系统、交通系统、计算机存储系统。现实生活中如排队买票、病人排队就诊、轮船进港、高速路上汽车排队通过收费站、机器等待修理等等都属于排队论问题。 四种模型 等待…...

做网站需要登录什么软件/app推广平台有哪些

“分享一个亲身经历&#xff1a;去年我怀了头胎后&#xff0c;向公司申请了产假&#xff0c;在产假期间我有零零散散地帮助公司做一些远程的工作。今年复工&#xff0c;发现原先的岗位被新人所取代了&#xff0c;我被领导告知要转岗至二线岗位&#xff0c;收入即将少很多……要…...

北京网站建设工作室/四川省人民政府

2020博客地址汇总2019年博客汇总 python 学习持续更新 python 学习 Pycharm python 及 Django 安装详细教程 python 安装配置 及 虚拟环境 for windows python2 基础学习脚本 python 装饰器 python3 基础语法一 python3基础语法二 python3基础语法三-文档字符串 关键字参…...

新密网站/互联网品牌宣传推广服务公司

【单选题】首届“挑战杯”中国大学生创业计划大赛是&#xff08; &#xff09;年开始的。 A. 1997 B. 1998 C. 1999 D. 2000 答案&#xff1a;1998 【单选题】“高校毕业生创业行动”是&#xff08; &#xff09;年提出的。 A. 2005 B. 2006 C. 2007 D. 2008 答案&#xff1a;…...

企业微信网站建设/重庆seo网络推广平台

### 集合简介类似于数学中的集合&#xff0c;对集合的操作有添加删除元素&#xff0c;有对多个集合求交并差等操作。 操作中key理解为集合的名字。比如在微博应用中&#xff0c;可以将一个用户所有的关注人存在一个集合中&#xff0c;将其所有粉丝存在一个集合。因为redis非…...