网站建设需要自备什么,13岁开网络科技公司,营销策划案的模板,wordpress论坛版块R语言基础(一)#xff1a;注释、变量 R语言基础(二)#xff1a;常用函数 R语言基础(三)#xff1a;运算
5.数据类型
5.1 基本数据类型 R语言基本数据类型大致有六种#xff1a; 整数Integer、浮点数Numeric、文本(字符串)Character、逻辑(布尔)Logical、复合类型Complex、…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] logicaltypeof(2) #数字中的浮点型
[1] doubletypeof(3L) #整数后面加一个L代表整数类型
[1] integertypeof(32i) #复合类型虚数
[1] complextypeof(hello) #字符型
[1] charactercharToRaw(a) #raw类型(原型)
[1] 61字符串有一些常用的操作 ahibRpaste(a,b) #连接字符串默认空格
[1] hi Rpaste(a,b,sep,) #指定连接符
[1] hi,Rnchar(Google) #获取字符串长度
[1] 6toupper(a) #转换大写
[1] Atolower(a) #转换小写
[1] asubstring(abcdefg,2,4) #截取字符串
[1] bcdformat(11.23456789, digits 5) #转成字符串显示n位数四舍五入
[1] 11.235format(13.7, width 6) #转化成长度为6的字符串左边补空格
[1] 13.75.2 对象类型【重点】 5.2.1 向量(vector) R语言中的向量和数学中的向量类似创建向量使用c()函数 ac(1,2)bc(2,4)ab #向量加法
[1] 3 6 #对应位置的相加b[1] #获取向量中的某个元素索引从1开始
[1] 2a[4] #索引超出范围
[1] NA向量有些常用的函数 ac(4,8,6,2)sort(a) #排序(升序)
[1] 2 4 6 8order(a) #返回排序后的索引
[1] 4 1 3 2a[order(a)] #通过排序后的索引拿到有序的向量
[1] 2 4 6 8rev(a) #反转原向量
[1] 2 6 8 4如果生成连续序列的向量可以使用如下形式 a1:5a
[1] 1 2 3 4 5a5:1a
[1] 5 4 3 2 1sum(a) #向量中元素求和
[1] 15sum(1:5)#向量中元素求和
[1] 15mean(a) #向量中元素求平均值
[1] 3var(a) #向量中元素求方差
[1] 2.5sd(a) #向量中元素求标准差
[1] 1.581139min(a) #向量中元素求最小值
[1] 1max(a) #向量中元素求最大值
[1] 5range(a)#向量中元素最大值和最小值(得一个二维向量)
[1] 1 5seq(1, 9, 2) #从1到9方差为2的等差序列
[1] 1 3 5 7 9seq(0, 1, length.out5) #指定0开始1结束共生成5个数的等差数列
[1] 0.00 0.25 0.50 0.75 1.00rep(0, 4) #产生重复序列
[1] 0 0 0 05.2.2 因子(factor) 因子用于存储不同值的数据创建因子使用 factor() 函数向量作为输入参数。 color_vectorc(红,黄,红,绿) #向量color_factorfactor(color_vector) #生成因子color_factor
[1] 红 黄 红 绿
Levels: 红 黄 绿 #不重复的5.2.3 矩阵(matrix) 矩阵是一种二维行列的数据结构。 mmatrix(c(1,2,3,4,5,6),2,3) #把一个向量转变成2行3列的矩阵(按列填充)m[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6mmatrix(c(1,2,3,4,5,6),nrow2,ncol3) #把向量转变成2行3列的矩阵同上m[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
#把向量转变成2行3列的矩阵先填充行mmatrix(c(1,2,3,4,5,6),2,3,byrowTRUE) m[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6mmatrix(c(1,2,3,4,5,6),nrow2,ncol3,byrowTRUE) #同上m[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6m[1,2] #通过坐标(索引)访问第1行第2个元素
[1] 2m[2,3]
[1] 6colnames(m) c(x, y, z) #给每一列起别名rownames(m) c(a, b) #给每一行起别名mx y z
a 1 3 5
b 2 4 6矩阵运算 m1matrix(c(1:6),2,3)m2matrix(c(5:10),2,3)m1[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6m2[,1] [,2] [,3]
[1,] 5 7 9
[2,] 6 8 10m1m2[,1] [,2] [,3]
[1,] 6 10 14
[2,] 8 12 16m1*m2 #对应位置元素相乘[,1] [,2] [,3]
[1,] 5 21 45
[2,] 12 32 60m3matrix(c(1:6),3,2)m3[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6m1 %*% m3 #数学中的矩阵相乘[,1] [,2]
[1,] 22 49
[2,] 28 64m4matrix(1:4,2,2) #逆矩阵m4[,1] [,2]
[1,] 1 3
[2,] 2 4solve(m4) #逆矩阵[,1] [,2]
[1,] -2 1.5
[2,] 1 -0.5[,1] [,2]
[1,] 1 3
[2,] 2 4apply(m4, 1, sum) #第二个参数为1按行操作用 sum() 函数
[1] 4 6apply(m4, 2, sum) #第二个参数为2按列操作
[1] 3 75.2.4 数组(array) 数组是一个多维结构存储同一种类型的数据集合。向量可以看做一维数组矩阵是二维数组。创建数组使用array()函数参数是一个向量默认是一维数组。 aarray(1:5) #一维数组a
[1] 1 2 3 4 5barray(1:5,dimc(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 4b[3,2,1] #第1个矩阵的第2列第3行的元素
[1] 1b[3,,1] #第1个矩阵的第3行
[1] 3 1 4 2b[,3,1] #第1个矩阵的第3列
[1] 2 3 4matrix1b[,,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,nrow2,ncol3))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 6alist[1] #访问列表元素
[[1]]
[1] Helloblistlist(3:4) #将两个list合并clistc(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 2000str(table) #查看信息
data.frame: 2 obs. of 3 variables:$ 姓名: chr 张三 李四$ 工号: chr 001 002$ 月薪: num 1000 2000names(table) #查看列名
[1] 姓名 工号 月薪nrow(table) #查看一共几行
[1] 2ncol(table) #查看一共几列
[1] 3datatable(姓名,月薪)
Error in table(姓名, 月薪) : 找不到对象姓名datadata.frame(table$姓名,table$月薪) #根据列名提取数据datatable.姓名 table.月薪
1 张三 1000
2 李四 2000datatable[2,1] #读第2行第1列data
[1] 李四datatable[c(1,2),c(2,3)] #读1~2行的2~3列data工号 月薪
1 001 1000
2 002 2000table姓名 工号 月薪
1 张三 001 1000
2 李四 002 2000table$性别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 女