R语言基础(四):数据类型 您所在的位置:网站首页 浮点数值是什么意思 R语言基础(四):数据类型

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

2024-06-29 11:30| 来源: 网络整理| 查看: 265

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") #给每一行起别名 > m x 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 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$月薪) #根据列名提取数据 > data table.姓名 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 女


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有