数据结构与基本运算
来源:互联网 发布:端口镜像 流量分析 编辑:程序博客网 时间:2024/06/08 04:55
复习篇-
1.数据类型
numeric:包含integers(整数型)和double-precision(双精度型).默认是双精度型数据
character:这种数据形式是夹在双引号或单引号之间的字符串.
logical:取TRUE or FALSE
complex:形如a+bi型的复数
raw(原始型):二进制形式保存数据
missing value(默认值):当一个元素或值在统计的时候是”不可得到的” (NA)或“缺失值”(missing value)时,相关位置可能会保留并且赋予一个特定的NA;任何NA的运算结果都是NA,is.na()函数用来检测数据是否缺失,返回结果是逻辑值。
常见的辨别和转换数据对象类型的函数有:
2.数据对象
R中的数据对象主要有6种结构:向量(vector)、矩阵(matrix)、数组(array)、因子(factor)、列表(list)和数据框(data.frame)
其中R在进行运算时或有些缺陷,微小的数字或巨大的数字在运算时经常会出现一些意外,浮点数在计算机中的表达有限,不能以任意精度存储.例如:
0.4-0.7+0.3==0[1] FALSE> 0.0000003-0.0000007+0.0000004==0 [1] TRUE
因此,在处理R里面的数据时,尤其在判断时,需要特别注意精度问题.
2.1向量
- 向量的赋值:
c()函数可以把参数首尾相连形成一个向量
对于字符型向量,函数paste()可以把对应元素连成一个字符串,长 度不同时,较短的向量会被重复使用.
此外,也可以用assign()函数对向量进行赋值. - 向量的运算
对于向量的乘法、除法和乘方运算,其方法是对应向量每一个分量做运算。出现在同一个表达式的向量最好同一长度,如果长度不一,则表达式中短的向量将会被循环使用,结果中会有警告信息。此外,”%%”表示整数除法(5%%3=1),”%/%”表示求余数(5%/%3=2) 生成有序规则
产生正则序列,用符号”:”,在表达式运算中,冒号运算符的优先级最高;如果在表达式外套(),意思是将结果直接打印出来.(r <- 3:8)
[1] 3 4 5 6 7 8
seq(from,to,by),其中by默认为1;或者为seq(from,by,length)
rep(x,times,…)或rep(x,each),其中x为要重复的对象,times表示重复的次数.注意与因子函数gl()的区别。- 向量常见函数
关于向量的统计函数有:mean()、median()、var()、sd()
- 向量索引
向量下标可以用子向量取出多个元素、或只取出单个元素;下标换成逻辑运算可以取出对应元素。
> x <- c(1:7) > x[2] [1] 2 > x[c(2,6)] [1] 2 6 > x[x<4] [1] 1 2 3 > z <- c(4:9,NA) > z [is.na(z)][1] NA> z [is.na(z)] <- 10 #将10赋给z里面的缺失值
如果下标取值是负整数,则表示删除相应位置的元素。
2.2矩阵
x <- matrix(c(1:6),ncol=2,dimnames =
list(c(“one”,”two”,”three”),c(“First”,”second”)),byrow = T);x
colnames(x) #访问矩阵A的行名
colnames(x) <- c(“green”,”red”) #修改行名
矩阵的运算
1.函数diag(v) #以向量v的元素为对角线元素的对角阵
diag(M) #取出矩阵M的对角线上的元素
2.函数solve(A,b) #求解线性方程组Ax=b
solve(A) #求矩阵的逆
A <- matrix(c(1:8,10),nr=3,byrow=T)
b <- c(1,1,1)
x <- solve(A,b);x
B <- solve(A)B
[,1] [,2] [,3]
[1,] -0.6666667 -1.333333 1
[2,] -0.6666667 3.666667 -2
[3,] 1.0000000 -2.000000 13.函数eigen(Sm)#求对称矩阵Sm的特征值与特征向量
ev <- eigen(Sm)
ev$vectors #是Sm的特征向量组成的矩阵
ev$values #是Smde的特征值构成的向量
Sm <- crossprod(A,A) #表示t(A)%*%A,两个矩阵相乘
ev <- eigen(Sm);ev
> A [,1] [,2] [,3][1,] 1 2 3[2,] 4 5 6[3,] 7 8 10> Sm <- crossprod(A,A) #表示t(A)%*%A,两个矩阵相乘> ev <- eigen(Sm);ev$values[1] 303.19533618 0.76590739 0.03875643$vectors [,1] [,2] [,3][1,] -0.4646675 0.833286355 0.2995295[2,] -0.5537546 -0.009499485 -0.8326258[3,] -0.6909703 -0.552759994 0.4658502
4.函数svd(A) #对矩阵A作奇异值分解,即A=UDt(V),U,V是正交阵,D是对角阵(也是A的奇异值)
svdA <- svd(A);svdA #返回一个列表,svd$d是矩阵A的奇异值
5.函数det(A) #是求矩阵A的行列式的值
det(A)
6.函数lsfit() #返回值是最小二乘拟合的结果
x <- c(0.0,0.2,0.4,0.6,0.8)
y <- c(0.9,1.9,2.8,3.3,4.2)
lsfit.sol <- lsfit(x,y)
7.dim(A) #得到矩阵A的维数
nrow(A) #得到矩阵A的行数
ncol(A) #得到矩阵A的列数
rowSums()#求各行和
colSums()#求各列和
rowMeans()#求行均值
colMeans() #求列均值
cbind() #横向接
rbind() #纵向接
as.vector(A) #可以将矩阵转化为向量
dimnames(A) #数组各维的名字(数组特殊属性维数)
8.函数apply(A,margin,FUN) #对数组(矩阵)的某一维(若干维)进行某种运算
9.用lower.tri()和upper.tri()提取矩阵的下、上三角形
lower.tri(x,diag=FALSE)
upper.tri(x,diag=FALSE)
结果返回为逻辑矩阵,其中diag为T时包含对角元,默认不含对角元
2.3数组
数组既可以看作是带有多个下标的且类型相同的元素的集合,也可以看作是向量和矩阵的推广
array(data=NA,dim=length(data),dimnames=NULL)
其中,data表示数据,dim是维数,dimnames可以更改数组的维度名称.
dim()函数可以返回数组的维数,还可以用来将向量转换成数组或矩阵
2.4因子
因子可以看出一种变量的别名
factor(x=character(),levels,labels=levels,exclude=NA,ordered)
2.5列表
数据对象可以包含不同的数据类型,比如一个列表可以包括数值向量、逻辑向量、矩阵、字符、数组和列表等,列表中包含的对象又称为它的分量
list(var1=var1,var2=var2,…)
要访问列表的某一部分,可以用list_name[[1]]的形式访问,若要访问第二个分量前三个元素,则可以用list_name[[2]][1:3]的形式。
由于列表的分量可以被命名,因此可用list_name$var_name形式访问
函数length()、mode()、names()可以分别返回列表的长度(分量的数目)、数据类型和列表里成分的名字;list_name[[1]]选择单个元素,即列表的第一个对象,结果中不显示列表分量的名称,而list_name[1]选择第一个子列表
“`
lst <- list(name=c(“alice”,”john”,”bobo”,”jerry”),
+ sex=c(“F”,”F”,”M”,”M”),
+ age=c(13,12,13,12),
+ height=c(56.5,65.3,57.3,62.5),
+ weight=c(84.0,89.0,99.5,83.0));lst
$name
[1] “alice” “john” “bobo” “jerry”
$sex
[1] “F” “F” “M” “M”
$age
[1] 13 12 13 12
$height
[1] 56.5 65.3 57.3 62.5
$weight
[1] 84.0 89.0 99.5 83.0
lst[1]
$name
[1] “alice” “john” “bobo” “jerry”
lst[[1]]
[1] “alice” “john” “bobo” “jerry”
lst$name
[1] “alice” “john” “bobo” “jerry”“`
2.6数据框
数据框是一种矩阵形式的数据,但数据框中各列可以是不同类型的数据,每列是一个变量,每行是一个观测。数据框既可以看作是矩阵的推广,也可以看作是一种特殊的列表对象。
对于可能列入数据框中的列表有如下限值:
- 分量可以是向量、因子、数值矩阵、列表或其他数据框
- 数值向量、逻辑值、因子保持原有格式,而字符向量会被强制转化为因子,并且它的水平就是向量中出现的独立值
- 在数据框中以变量形式出现的向量结构必须长度一致,矩阵结构必须有一样的行数
data.frame(…,row.names=NULL,check.rows=FALSE,…)
row.names()也可以对数据框的行名进行修改
数据框的引用
(1)以数组形式访问
因为数据框的列表示变量,行表示观测数,所以可以把数据框看作为数组,可以按行、列访问
(2)以列表的形式访问数据框
data_frame_name$var_name
data_frame_name[[var_name]]
数据框绑定attach()函数
attach()函数可以把数据框中的变量”连接”到内存中,从而可以直接使用数据框中的变量名访问;取消连接用detach()函数
- 数据结构与基本运算
- 链表数据结构与基本运算
- 第二章数据结构与基本运算
- 栈数据结构及基本运算
- 【数据结构】单链表上的基本运算
- 数据结构-链式存储-基本运算
- c++基本数据结构和基本运算
- 基本运算与函数
- 基本数据结构与算法
- R语言学习笔记(一)——数据结构与基本运算
- 顺序表数据结构及基本运算
- 队列的数据结构及基本运算
- 经典数据结构之矩阵的基本运算
- 【数据结构之顺序栈的基本运算】
- 【数据结构之链栈的基本运算】
- 【数据结构之链队列的基本运算】
- 数据结构 顺序串的各种基本运算
- 数据结构之顺序表的基本运算
- 详解MySQL Server端如何发送结果集给客户端
- Sphinx相关资料
- 如何把自己的插件发布到bower平台
- 114 CoreData基本使用
- lightoj 1236 pairs of lcm
- 数据结构与基本运算
- anomaly detection ng recommender system
- Android Studio1.4.x JNI开发基础-基本环境配置
- dijkstra 昂贵的聘礼 poj1062
- ios枷锁解锁
- VMware安装windows XP OS 虚拟机时常见的问题
- MongoDBm基本概念的分析
- svn使用简介
- PAT(Basic)-1006.换个格式输出整数(15)