书签 分享 收藏 举报 版权申诉 / 69
上传文档赚钱

类型R软件及统计分析向量多维数组和矩阵课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4990089
  • 上传时间:2023-01-31
  • 格式:PPT
  • 页数:69
  • 大小:725KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《R软件及统计分析向量多维数组和矩阵课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    软件 统计分析 向量 多维 数组 矩阵 课件
    资源描述:

    1、实验目的实验目的实验内容实验内容学习学习S语言中向量、多维数组和矩阵的表示方法语言中向量、多维数组和矩阵的表示方法1 1、数据表示数据表示2 2、应用实例、应用实例3 3、实验作业、实验作业S向量、多维数组和矩阵向量、多维数组和矩阵S语言是基于对象(Object)的语言 基本的数据类型有:向量、矩阵、列表等 复杂的数据对象有:数据框对象,时间序列对象,模型对象,图形对象,等等。S语言表达式可以使用常量和变量。变量名:由字母、数字、句点组成,第一个字符必须是字母,长度没有限制,但区分大小写。特别要注意句点可以作为名字的合法部分。常量 常量为:数值型、逻辑型和字符型三种,其中 数值型数据又可以分为

    2、整型、单精度、双精度等 例如,123,123.45,1.2345e30 是数值型常量;“Weight”,“李明”是字符型;逻辑真值写为T或TRUE(注意区分大小写,写t或true都没意义),逻辑假值写为F或FALSE。复数常量就用3.5-2.1i这样的写法表示。S中的数据可以取缺失值,用符号NA代表缺失值。函数is.na(x)返回x是否缺失值(返回值T或F)。向量(Vector)与赋值 向量是有相同基本类型的元素序列,即一维数组 定义向量的最常用办法是使用函数c(),它把若干个数值或字符串组合为一个向量,比如:x=c(1:3,10:13)x 1 1 2 3 10 11 12 13 S中用符号“

    3、x1=c(1,2)和 assign(“x1”,c(1,2)相同 函数length(x)可以计算向量x的长度。向量运算 可以对向量进行加()减()乘(*)除(/)、乘方()运算,其含意是对向量的每一个元素进行运算。例如:x y=x*2+1 y 1 3.0 9.0 13.5%/%表示整数除法(比如5%/%3为1),%表示求余数(如5%3为2)。可以用向量作为函数自变量,sqrt、log、exp、sin、cos、tan等函数都可以用向量作自变量,结果是对向量的每一个元素取相应的函数值 函数min和max分别取向量自变量的最小值和最大值,函数sum计算向量自变量的元素和,函数mean计算均值,函数va

    4、r计算样本方差(分母为n-1),函数sd计算标准差(在Splus中用sqrt(var()计算)如果求var(x)而x是矩阵,则结果为样本协方差阵。(行向量为观测值)随机向量随机向量记记 X=(X1,X2,Xp)为为 维随机向量维随机向量,对对 X=(X1,X2,Xp)进行一次观测,进行一次观测,得观测值:得观测值:(x11,x12,x1p)=X(1),它是一个样品。它是一个样品。对对 X=(X1,X2,Xp)进行观测进行观测n次,次,得得n个样品:个样品:X(i)=(xi1,x i 2,x i p),i=1,n 它是一个样本它是一个样本.用矩阵记为如下用矩阵记为如下称为样本数据阵称为样本数据阵

    5、.pdefndefnpnnppXXXXXXxxxxxxxxxX,21)()2()1(212222111211 ),1(11pixnxnaaii npniiXnxxXnX11),(111)(其中其中(1)1)样本均值向量样本均值向量 X),1,()(1pjixxxxanajajiaiji ppjidefnnnanaaanaaaXnIXXXnXXXXnXXXXXXA )(111)()(1)()(1)(其中其中(又称交叉乘积阵又称交叉乘积阵)其中其中),2,1()(1112pixxnsnaiaii i ppjisAnS )(11称为变量称为变量的的称为变量称为变量的的其中其中),2,1,(pjiaa

    6、asssrjjiijijjiijiji 或或ppjirR )(sort(x)返回x的元素从小到大排序的结果向量 order(x)返回使得x从小到大排列的元素下标向量(xorder(x)等效于sort(x))。x=c(2,4,8,6,10)order(x)1 1 2 4 3 5 xorder(x)1 2 4 6 8 10任何数与缺失值的运算结果仍为缺失值。例如,2*c(1,NA,2)1 2 NA 4 sum(c(1,NA,2)1 NA 产生有规律的数列产生有规律的数列 在S中很容易产生一个等差数列。例如,1:n产生从1到n的整数列,-2:3产生从-2到3 的整数列,5:2产生反向的数列:注意 1

    7、:n-1不是代表1到n-1而是向量1:n减去1,1:n-1 1 0 1 2 3 4 1:(n-1)1 1 2 3 4 seq函数是更一般的等差数列函数。如只指定一个自变量n0,则seq(n)相当于1:n。指定两个自变量时,第一量是开始值,第二量是结束值,如seq(-2,3)是从-2到3,默认公差为1。S函数调用的一个很好的特点是它可以使用不同个数的自变量,函数可以对不同类型的自变量给出不同结果,自变量可以用“自变量名自变量值”的形式指定。例如,seq(-2,3)可以写成seq(from=-2,to=3)。可以用一个by参数指定等差数列的增加值,例如:seq(0,2,0.7)1 0.0 0.7

    8、1.4 也可以写成seq(from=0,to=2,by=0.7)。有参数名的参数的次序任意,如:seq(0,by=0.7,to=2)1 0.0 0.7 1.4 可以用length参数指定数列长度,如seq(from=10,length=5)产生10到14。seq函数还可以用一种seq(along=向量名)的格式,这时只能用这一个参数,产生该向量的下标序列,如:x 1 1.00 4.00 6.25 seq(along=x)1 1 2 3 另一个类似的函数是rep,它可以重复第一个自变量若干次,例如:rep(x,3)1 1.00 4.00 6.25 1.00 4.00 6.25 1.00 4.00

    9、 6.25 第一个参数名为x,第二个参数名为times(重复次数)。此外numeric(n)可以产生一个长度为n的零向量 逻辑向量 向量可以取逻辑值,如:l=c(T,T,F)l输出1 TRUE TRUE FALSE 当然,逻辑向量往往是一个比较的结果,如:x 输出 1 1.00 4.00 6.25 l=x 3 l 输出 1 FALSE TRUE TRUE 一个向量与常量比较大小,结果还是一个向量,元素为每一对比较的结果逻辑值。两个向量也可以比较,如:log(10*x)1 2.302585 3.688879 4.135167 log(10*x)x 输出1 TRUE FALSE FALSE 比较运

    10、算符包括,=,=,!=。逻辑向量 两个逻辑向量可以进行与(&)、或(|)运算,结果是对应元素运算的结果。对逻辑向量x计算!x表示取每个元素的非。例如:x=c(1,4,6.25,1.6)(x 1.5)&(x all(log(10*x)x)1 FALSE 判断是否其中有真值的函数是any,如:any(log(10*x)x)1 TRUE 逻辑向量 函数is.na(x)用来判断x的每一个元素是否缺失。如 is.na(c(1,NA,3)1 FALSE TRUE FALSE 逻辑值可以强制转换为整数值,TRUE变成1,FALSE变成0。例如,age65为老年人,否则为年轻人,可以用c(“young”,“o

    11、ld”)(age65)+1 表示。当年龄大于65时age65等于TRUE,加1则把TRUE转换为数值型的1,结果得2,于是返回第二个下标处的“old”。否则等于0+1下标处的“young”。age=c(89,20,10,66);c(young,old)(age65)+1;1 old young young old 字符型向量 向量元素可以取字符串值。例如:c1=c(x,sin(x)c1 输出 1 x sin(x)ns=c(Weight,Height,年龄)ns 输出1 Weight Height 年龄 paste函数用来把它的自变量连成一个字符串,中间用空格分开,例如:paste(My,Job

    12、)1 My Job paste(Hi,早)输出1 Hi 早 连接的自变量可以是向量,这时各对应元素连接起来,长度不相同时较短的向量被重复使用。自变量可以是数值向量,连接时自动转换成适当的字符串表示,例如:paste(c(X,Y),=,1:4)1 X=1 Y=2 X=3 Y=4 分隔用的字符可以用sep参数指定,例如:paste(result.,1:5,sep=)1 result.1 result.2 result.3 result.4 result.5 如果给paste()函数指定了collapse参数,则把字符串向量的各个元素连接成一个字符串,中间用collapse指定的值分隔。比如 pas

    13、te(c(a,b),collapse=.)得到a.b。复数向量 S支持复数运算。复数常量只要用3.5+2.1i这样的格式即可。复向量的每一个元素都是复数。可以用complex()函数生成复向量(见帮助)。Re()计算实部,Im()计算虚部,Mod()计算复数模,Arg()计算复数幅角。complex package:base R DocumentationComplex VectorsDescription:Basic functions which support complex arithmetic in R.Usage:complex(length.out=0,real=numeric(

    14、),imaginary=numeric(),modulus=1,argument=0)plex(x,.)plex(x)Re(x)Im(x)Mod(x)Arg(x)Conj(x)Arguments:length.out:numeric.Desired length of the output vector,inputs being recycled as needed.real:numeric vector.imaginary:numeric vector.modulus:numeric vector.argument:numeric vector.x:an object,probably of

    15、 mode complex.:further arguments passed to or from other methods.Details:Complex vectors can be created with complex.The vector can be specified either by giving its length,its real and imaginary parts,or modulus and argument.(Giving just the length generates a vector of complex zeroes.)plex attempt

    16、s to coerce its argument to be of complex type:like as.vector it strips attributes including names.Note that plex and is.numeric are never both TRUE.The functions Re,Im,Mod,Arg and Conj have their usual interpretation as returning the real part,imaginary part,modulus,argument and complex conjugate f

    17、or complex values.Modulus and argument are also called the _polar coordinates_.If z =x+i y with real x and y,Mod(z)=sqrtx2+y2,and for phi=Arg(z),x=cos(phi)and y=sin(phi).They are all generic functions:methods can be defined for them individually or via the Complex group generic.In addition,the eleme

    18、ntary trigonometric,logarithmic and exponential functions are available for complex plex is generic:you can write methods to handle specific classes of objects,see InternalMethods.References:Becker,R.A.,Chambers,J.M.and Wilks,A.R.(1988)_The New S Language_.Wadsworth&Brooks/Cole.Examples:0i (-3:3)mat

    19、rix(1i(-6:5),nr=4)#-all columns are the same 0 1i#a complex NaN#create a complex normal vector z-complex(real=rnorm(100),imag=rnorm(100)#or also(less efficiently):z2 complex(2)1 0+0i 0+0i complex(2,4,6)1 4+6i 4+6i complex(1,4,6)1 4+6i y=1:2+1i*(8:9)y 1 1+8i 2+9i Re(y)1 1 2 Im(y)1 8 9 Mod(y)1 8.06225

    20、8 9.219544 Arg(y)1 1.446441 1.352127向量下标运算 某一个元素只要用xi的格式访问,其中x是一个向量名,或一个取向量值的表达式,如:x 1 1.00 4.00 6.25 x2 1 4 (c(1,3,5)+5)2 1 8 可以单独改变一个元素的值,例如:x2 x 1 1.00 125.00 6.25 S提供了四种方法来访问向量的一部分,格式为xv,x为向量名或向量值的表达式,v是如下的表示下标向量:一、取正整数值的下标向量一、取正整数值的下标向量 v为一个向量,取值在1到length(x)之间,取值允许重复,例如,xc(1,3)1 1.00 6.25 x1:2

    21、1 1 125 xc(1,3,2,1)1 1.00 6.25 125.00 1.00 c(a,b,c)rep(c(2,1,3),3)1 b a c b a c b a c 二、取负整数值的下标向量二、取负整数值的下标向量 v为一个向量,取值在length(x)到1之间,表示扣除相应位置的元素。例如:x-(1:2)1 6.25三、取逻辑值的下标向量三、取逻辑值的下标向量 v为和x等长的逻辑向量,xv表示取出所有v为真值的元素,如:x 输出:1 1.00 125.00 6.25 x xx xx0 输出:numeric(0)可见xx0可以取出x中所有正弦函数值为正的元素组成的向量。如果下标都是假值则

    22、结果是一个零长度的向量,显示为numeric(0)。四、取字符型值的下标向量四、取字符型值的下标向量 在定义向量时可以给元素加上名字,例如:ages ages 输出:Li Zhang Liu 33 29 18 ages1 输出:Li 33 ages1=2 ages1 输出:Li 2 向量还可用元素名字来访问元素或元素子集,例如:agesc(Li,Liu)输出:Li Liu 33 18 向量元素名可以后加,例:ages1=c(33,29,18)names(ages1)=c(Li,Zhang,Liu)ages1 输出 Li Zhang Liu 33 29 18 S中还可以改变一部分元素的值,例如:

    23、x 1 1.00 125.00 6.25 xc(1,3)=c(144,169)x 1 144 125 169 注意赋值的长度必须相同,例外是可以把部分元素赋为一个统一值:xc(1,3)=0 x 1 0 125 0 要把向量所有元素赋为一个相同的值而又不想改变其长度,可以用x的写法:x=0 注意这与“x=0”是不同的,前者赋值后向量长度不变,后者使向量变为标量0。改变部分元素值的技术与逻辑值下标方法结合可以定义向量的分段函数,例如:要定义y=f(x)为当x y=numeric(length(x)yx0=1-xx yx=0=1+xx=0 要定义y=f(x)为当x3.0时取x,3.0=x3.5时取x

    24、+10,否则取x+20;x=c(0.5,-1,1,2,3,4,1,2,3,4);求y.x=c(0.5,-1,1,2,3,4,1,2,3,4);y=numeric(length(x);yx3=xx=3)&(x=3)&(x3.5=xx3.5+20;x;y;多维数组和矩阵数组(array)和矩阵(matrix)数组(array)带多个下标的类型相同的元素的集合,常用的是数值型的数组如矩阵,也可以有其它类型(如字符型、逻辑型、复型数组)。数组有一个特征属性叫做维数向量(dim属性),比如维数向量有两个元素时数组为二维数组(矩阵)。维数向量的每一个元素指定了该下标的上界,下标的下界总为1。一组值只有定义

    25、了维数向量(dim属性)后才能被看作是数组。比如:a=1:24 a dim(a)=c(2,4,3)a 数组(array)和矩阵(matrix)数组元素的排列次序缺省情况下是采用FORTRAN的数组元素次序(按列次序),即第一下标变化最快,最后下标变化最慢,对于矩阵(二维数组)则是按列存放。例如,假设数组a的元素为1:24,维数向量为c(2,3,4),则各元素次序为a1,1,1,a2,1,1,a1,2,1,a2,2,1,a1,3,1,.,a2,3,4。用函数array()或matrix()可以更直观地定义数组。array()函数的完全使用为array(x,dim=length(x),dimnam

    26、es=NULL),其中x是第一自变量,应该是一个向量,表示数组的元素值组成的向量。dim参数可省,省略时作为一维数组(但不同于向量)。dimnames属性可以省略,不省略时是一个长度与维数相同的列表(list,见后面),列表的每个成员为一维的名字。函数matrix():二维数组,即矩阵。格式为 matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL)其中第一自变量data为数组的数据向量(缺省值为缺失值NA),nrow为行数,ncol为列数,byrow表示数据填入矩阵时按行次序还是列次序,缺省情况下按列次序。dimnames缺省是空值,否则

    27、是一个长度为2的列表,列表第一个成员是长度与行数相等的字符型向量,表示每行的标签,列表第二个成员是长度与列数相同的字符型向量,表示每列的标签。例如,定义一个3行4列,由1:12按行次序排列的矩阵,可以用:b b b ,1,2,3,4 1,1 2 3 4 2,5 6 7 8 3,9 10 11 12 注意在有数据的情况下只需指定行数或列数之一。指定的数据个数允许少于所需的数据个数,这时循环使用提供的数据。例如:b b=matrix(c(1,1,1,2,2,3,1,3,4,2,1,4),ncol=3,byrow=T)b ab x1 x2 x1+x2 x3 x3 x1+x3数组四则运算 数组可以进行

    28、四则运算(+,,*,/,),解释为数组对应元素的四则运算,参加运算的数组一般应该是相同形状的(dim属性完全相同)。例如,假设A,B,C是三个形状相同的数组,则 D A B A 另外,向量用在矩阵乘法中可以作为行向量看待也可以作为列向量看待,这要看哪一种观点能够进行矩阵乘法运算。例如,设x是一个长度为n的向量,A是一个n*n 矩阵,则“x%*%A%*%x”表示二次型 。但是,有时向量在矩阵乘法中的地位并不清楚,比如“x%*%x”就既可能表示内积,也可能表示n*n 阵 。因为前者较常用,所以S选择表示前者,但内积最好还是用crossprod(x)来计算。要表示 n*n阵,可以用“cbind(x)

    29、%*%x”或“x%*%rbind(x)”。函数crossprod(X,Y)表示一般的交叉乘积(内积),即X的每一列与Y的每一列的内积组成的矩阵。如果X和Y都是向量则是一般的内积。只写一个参数X的crossprod(X)计算X自身的内积 。其它矩阵运算还有solve(A,b)解线性方程组 ,solve(A)求方阵A的逆矩阵,svd()计算奇异值分解,qr()计算QR分解,eigen()计算特征向量和特征值。详见随机帮助,例如:?qr 函数diag()的作用依赖于其自变量。diag(vector)返回以自变量(向量)为主对角元素的对角矩阵。diag(matrix)返回由矩阵的主对角元素组成的向量。

    30、diag(k)(k为标量)返回k阶单位阵。x=1:3 x 1 1 2 3 crossprod(x),1 1,14 cbind(x)%*%x ,1,2,3 1,1 2 3 2,2 4 6 3,3 6 9 x%*%rbind(x),1,2,3 1,1 2 3 2,2 4 6 3,3 6 9 y=diag(x)y ,1,2,3 1,1 0 0 2,0 2 0 3,0 0 3 diag(y)1 1 2 3 diag(3),1,2,3 1,1 0 0 2,0 1 0 3,0 0 1矩阵合并与拉直 函数cbind()把其自变量横向拼成一个大矩阵,rbind()把其自变量纵向拼成一个大矩阵。cbind()的

    31、自变量是矩阵或者看作列向量的向量,自变量的高度应该相等(对于向量,高度即长度,对于矩阵,高度即行数)。rbind的自变量是矩阵或看作行向量的向量,自变量的宽度应该相等(对于向量,宽度即长度,对于矩阵,宽度即列数)。如果参与合并的自变量比其它自变量短则循环补足后合并。例如:x1=rbind(c(1,2),c(3,4)x1 ,1,2 1,1 2 2,3 4 x2 x3 x3 ,1,2,3,4 1,1 2 11 12 2,3 4 13 14 x4=rbind(x1,x2)x4 ,1,2 1,1 2 2,3 4 3,11 12 4,13 14 cbind(1,x1),1,2,3 1,1 1 2 2,1

    32、 3 4 设a是一个数组,要把它转化为向量(去掉dim和dimnames属性),只要用函数as.vector(a)返回值就可以了(注意函数只能通过函数值返回结果而不允许修改它的自变量,比如t(X)返回X的转置矩阵而X本身并未改变)。另一种由数组得到其数据向量的简单办法是使用函数c(),例如c(a)的结果是a的数据向量。这样的另一个好处是c()允许多个自变量,它可以把多个自变量都看成数据向量连接起来。例如,设A和B是两个矩阵,则c(A,B)表示把A按列次序拉直为向量并与把B按列次序拉直为向量的结果连接起来。一定注意拉直时是按列次序拉直的。a=rbind(c(1,2),c(3,4)a ,1,2 1

    33、,1 2 2,3 4 as.vector(a)1 1 3 2 4 b=t(a)b ,1,2 1,1 3 2,2 4 c(a,b)1 1 3 2 4 1 2 3 4数组的维名字 数组可以有一个属性dimnames保存各维的各个下标的名字,缺省时为NULL(即无此属性)。以矩阵为例,它有两个维:行维和列维。比如,设x为2行3列矩阵,它的行维可以定义一个长度为2的字符向量作为每行的名字,它的列维可以定义一个长度为3的向量作为每列的名字,属性dimnames是一个列表,列表的每个成员是一个维名字的字符向量或NULL。例如:x x First Second one 1 2 two 3 4 three 5

    34、 6 我们也可以先定义矩阵x然后再为dimnames(x)赋值。对于矩阵,我们还可以使用属性rownames和colnames来访问行名和列名。在定义了数组的维名后我们对这一维的下标就可以用它的名字来访问,x rownames(x)colnames(x)x 第一列 第二列第一行 1 2第二行 3 4第三行 5 6 x第一行,第二列 1 2 x第一行,第一列 第二列 1 2 x,第二列 第一行 第二行 第三行 2 4 6 数组的外积 两个数组a和b的外积是由a的每一个元素与b的每一个元素搭配在一起相乘得到一个新元素,这样得到一个维数向量等于a的维数向量与b的维数向量连起来的数组,即若d为a和b的

    35、外积,则dim(d)=c(dim(a),dim(b)。a和b的外积记作 a%o%b。如 d d x y f z x y f plot(as.numeric(names(f),f,type=h,+xlab=行列式值,ylab=频数)其中as.numeric()把向量f中的元素名又转换成了数值型,用来作为作图的横轴坐标,f 中的元素值即频数作为纵轴,type=h表示是画垂线型图。plot(as.numeric(names(f),f,type=h,xlab=行列式值,ylab=频数)plot(as.numeric(names(f),f/10000,type=h,xlab=行列式值,ylab=频率)数

    36、组的广义转置 可以用aperm(a,perm)函数把数组a的各维按perm中指定的新次序重新排列。例如:a b c a=array(1:12,dim=c(2,3,2)a,1 ,1,2,3 1,1 3 5 2,2 4 6,2 ,1,2,3 1,7 9 11 2,8 10 12 aperm(a,c(3,2,1),1 ,1,2,3 1,1 3 5 2,7 9 11,2 ,1,2,3 1,2 4 6 2,8 10 12 aperm(a,c(2,1,3),1 ,1,2 1,1 2 2,3 4 3,5 6 ,2 ,1,2 1,7 8 2,9 10 3,11 12 apply函数 对于向量,我们有sum、m

    37、ean等函数对其进行计算。对于数组,如果我们想对其中一维(或若干维)进行某种计算,可以用apply函数。其一般形式为:apply(X,MARGIN,FUN,.)其中X为一个数组,MARGIN是固定哪些维不变,FUN是用来计算的函数。例如,设a是n*m 矩阵,则apply(a,1,sum)的意义是对a的各行求和(保留第一维即第一个下标不变),结果是一个长度为3的向量(与第一维长度相同),而apply(a,2,sum)意义是对a的各列求和,结果是一个长度为4的向量(与第二维长度相同)。如果函数FUN的结果是一个标量,MARGIN只有一个元素,则apply的结果是一个向量,其长度等于MARGIN指定

    38、维的长度,相当于固定MARGIN指定的那一维的每一个值而把其它维取出作为子数组或向量送入FUN中进行运算。如果MARGIN指定了多个维,则结果是一个维数向量等于dim(X)MARGIN的数组。如果函数FUN的结果是一个长度为N的向量,则结果是一个维数向量等于c(N,dim(X)MARGIN)的数组,注意这时不论是对哪一维计算,结果都放在了第一维。所以,若我们要把43矩阵a的3列分别排序,只要用apply(a,2,sort),这样对每一列排序得到一个长度为4的向量,用第一维来引用,结果的维向量为c(N,dim(a)2)=c(4,3),保留了列维,恰好得到所需结果,运行如下例:a a=cbind(

    39、c(4,9,1),c(3,7,2)a ,1,2 1,4 3 2,9 7 3,1 2 apply(a,2,sum)1 14 12 apply(a,1,sum)1 7 16 3 apply(a,2,sort),1,2 1,1 2 2,4 3 3,9 7 apply(a,1,sort),1,2,3 1,3 7 1 2,4 9 2 t(apply(a,1,sort),1,2 1,3 4 2,7 9 3,1 2 apply(a,2,sort)但是,如果要对行排序,则apply(a,1,sort)把a的每一行3个元素排序后的结果用第一维来引用,结果的维向量为c(N,dim(a)1)=c(3,4),把原来的

    40、列变成了行,所以t(apply(a,1,sort)才是对a的每一行排序的结果。如:apply(a,1,sort)t(apply(a,1,sort)上面我们只用了矩阵(二维数组)作为例子讲解apply的用法。实际上,apply可以用于任意维数的数组,函数FUN也可以是任意可以接收一个向量或数组作为第一自变量的函数。比如,设x是一个维数向量为c(2,3,4,5)的数组,则apply(x,c(1,3),sum)可以产生一个2行4 列的矩阵,其每一元素是x中固定第1维和第3维下标取出子数组求和的结果。实验作业实验作业1、六个元素 a,b,c,d,e,f都是相互独立的服从离散均匀分布的随机变量,其元素均

    41、在1,.,9中取值。设法求ade-bcf 的分布。要求(1)产生一个外积矩阵;(2)用一个table()函数来估计每一个值的出现概率;(3)绘制一个频数分布图,一个频率分布图。要求:需给出程序、结果,存成要求:需给出程序、结果,存成word文档文档 发送到发送到 ftp:/10.1.70.33 用户名:用户名:rsoft 密码:密码:1234562.(1)写出元素为3,-1.5,3E-10的向量。(2)写出从3开始每次增加3,长度为100的向量。(3)写出(0,2)重复10次的向量。(4)对向量x,写出其元素大于等于0小于1的条件。(5)对向量x,写出其元素都等于0的条件。(6)写出包含12个

    42、月份名称的向量。(7)写出包含方程 的根的向量,并写出其幅角的余弦和正弦值。61z 3.设x为一个长100的整数向量。比如,x-floor(100*runif(100)。(1)显示x第21到30号元素。(2)把x第31,35,39号元素赋值为0。(3)显示x中除了第1号和第50号的元素之外的子集。(4)列出x中个位数等于3的元素。(5)列出x中个位数等于3的元素的下标位置。Hint:use which()(6)给x的每一个元素加上名字,为x1到x100。(7)求x的平均值并求每一个元素减去平均值后的离差,计算x元素的平方和及离差平方和。(8)把x从大到小排序。计算x的10%分位数到90%分位数之间的距离。4.定义一个维数为(3,4,2)的数组其第一层(第三下标为1)取从1开始的奇数,第二层取从2开始的偶数。显示每一层的第2行元素。把第(1,1,1),(2,2,2),(2,2,1)号元素赋值为零。把第一层加上100,把第二层加上200。分别计算第一层和第二层的平均值。5.试画出任一给定的二元正态分布的密度函数图形。如二元标准正态分布等

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:R软件及统计分析向量多维数组和矩阵课件.ppt
    链接地址:https://www.163wenku.com/p-4990089.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库