




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)內(nèi)容學(xué)習(xí)S語(yǔ)言中向量、多維數(shù)組和矩陣的表示方法1、數(shù)據(jù)表示2、應(yīng)用實(shí)例3、實(shí)驗(yàn)作業(yè)S向量、多維數(shù)組和矩陣實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)內(nèi)容學(xué)習(xí)S語(yǔ)言中向量、多維數(shù)組和矩陣的表示方法1S語(yǔ)言是基于對(duì)象(Object)的語(yǔ)言基本的數(shù)據(jù)類(lèi)型有:向量、矩陣、列表等復(fù)雜的數(shù)據(jù)對(duì)象有:數(shù)據(jù)框?qū)ο螅瑫r(shí)間序列對(duì)象,模型對(duì)象,圖形對(duì)象,等等。S語(yǔ)言表達(dá)式可以使用常量和變量。變量名:由字母、數(shù)字、句點(diǎn)組成,第一個(gè)字符必須是字母,長(zhǎng)度沒(méi)有限制,但區(qū)分大小寫(xiě)。特別要注意句點(diǎn)可以作為名字的合法部分。S語(yǔ)言是基于對(duì)象(Object)的語(yǔ)言S語(yǔ)言表達(dá)式可以使用常常量常量為:數(shù)值型、邏輯型和字符型三種,其中數(shù)值型數(shù)據(jù)又可以分為整型、單精度、雙精度等例如,123,123.45,1.2345e30是數(shù)值型常量;“Weight”,“李明”是字符型;邏輯真值寫(xiě)為T(mén)或TRUE(注意區(qū)分大小寫(xiě),寫(xiě)t或true都沒(méi)意義),邏輯假值寫(xiě)為F或FALSE。復(fù)數(shù)常量就用3.5-2.1i這樣的寫(xiě)法表示。S中的數(shù)據(jù)可以取缺失值,用符號(hào)NA代表缺失值。函數(shù)is.na(x)返回x是否缺失值(返回值T或F)。常量常量為:數(shù)值型、邏輯型和字符型三種,其中S中的數(shù)據(jù)可以向量(Vector)與賦值向量是有相同基本類(lèi)型的元素序列,即一維數(shù)組定義向量的最常用辦法是使用函數(shù)c(),它把若干個(gè)數(shù)值或字符串組合為一個(gè)向量,比如:>x=c(1:3,10:13)>x[1]12310111213S中用符號(hào)“<-”、“=”來(lái)為變量賦值。另一種賦值的辦法是用assign函數(shù),比如>x1=c(1,2)和>assign(“x1”,c(1,2))相同函數(shù)length(x)可以計(jì)算向量x的長(zhǎng)度。向量(Vector)與賦值向量是有相同基本類(lèi)型的元素序列,向量運(yùn)算可以對(duì)向量進(jìn)行加(+)減(-)乘(*)除(/)、乘方(^)運(yùn)算,其含意是對(duì)向量的每一個(gè)元素進(jìn)行運(yùn)算。例如:
>x<-c(1,4,6.25)>y=x*2+1>y[1]3.09.013.5%/%表示整數(shù)除法(比如5%/%3為1),
%%表示求余數(shù)(如5%%3為2)。向量運(yùn)算可以對(duì)向量進(jìn)行加(+)減(-)乘(*)除(/)、乘可以用向量作為函數(shù)自變量,
sqrt、log、exp、sin、cos、tan等函數(shù)都可以用向量作自變量,結(jié)果是對(duì)向量的每一個(gè)元素取相應(yīng)的函數(shù)值函數(shù)min和max分別取向量自變量的最小值和最大值,函數(shù)sum計(jì)算向量自變量的元素和,函數(shù)mean計(jì)算均值,函數(shù)var計(jì)算樣本方差(分母為n-1),函數(shù)sd計(jì)算標(biāo)準(zhǔn)差(在Splus中用sqrt(var())計(jì)算)如果求var(x)而x是矩陣,則結(jié)果為樣本協(xié)方差陣。(行向量為觀測(cè)值)可以用向量作為函數(shù)自變量,隨機(jī)向量記
X=(X1
,
X2,…,
Xp)'
為p維隨機(jī)向量,對(duì)X=(X1
,
X2,…,
Xp)'
進(jìn)行一次觀測(cè),
得觀測(cè)值:(x11
,
x12,…,
x1p)=X'(1),
它是一個(gè)樣品。隨機(jī)向量記X=(X1,X2對(duì)X=(X1
,
X2,…,
Xp)'進(jìn)行觀測(cè)n次,
得n個(gè)樣品:
X'(i)=(xi1
,
xi2,…,
xi
p),i=1,…,n
它是一個(gè)樣本.用矩陣記為如下稱(chēng)為樣本數(shù)據(jù)陣.對(duì)X=(X1,X2,…,Xp)'進(jìn)行觀多元總體樣本的數(shù)字特征其中
(1)樣本均值向量X
:多元總體樣本的數(shù)字特征其中多元總體樣本的數(shù)字特征其中(2)樣本離差陣(又稱(chēng)交叉乘積陣)A:多元總體樣本的數(shù)字特征其中(2)樣本離差陣(又稱(chēng)交叉乘積(3)樣本協(xié)方差陣S:
多元總體樣本的數(shù)字特征其中稱(chēng)為變量Xi的樣本方差;樣本方差的平方根ˉ
稱(chēng)為變量Xi的樣本標(biāo)準(zhǔn)差.sii(3)樣本協(xié)方差陣S:多元總體樣本的數(shù)字特征其中稱(chēng)為(4)樣本相關(guān)陣R:
多元總體樣本的數(shù)字特征其中(4)樣本相關(guān)陣R:多元總體樣本的數(shù)字特征其中sort(x)返回x的元素從小到大排序的結(jié)果向量
order(x)返回使得x從小到大排列的元素下標(biāo)向量(x[order(x)]等效于sort(x))。
>x=c(2,4,8,6,10)>order(x)[1]12435>x[order(x)][1]246810任何數(shù)與缺失值的運(yùn)算結(jié)果仍為缺失值。例如,>2*c(1,NA,2)[1]2NA4>sum(c(1,NA,2))[1]NAsort(x)返回x的元素從小到大排序的結(jié)果向量任何數(shù)與缺失產(chǎn)生有規(guī)律的數(shù)列在S中很容易產(chǎn)生一個(gè)等差數(shù)列。例如,1:n產(chǎn)生從1到n的整數(shù)列,
-2:3產(chǎn)生從-2到3的整數(shù)列,
5:2產(chǎn)生反向的數(shù)列:注意1:n-1不是代表1到n-1而是向量1:n減去1,>1:n-1[1]01234>1:(n-1)[1]1234產(chǎn)生有規(guī)律的數(shù)列在S中很容易產(chǎn)生一個(gè)等差數(shù)列。seq函數(shù)是更一般的等差數(shù)列函數(shù)。如只指定一個(gè)自變量n>0,則seq(n)相當(dāng)于1:n。指定兩個(gè)自變量時(shí),第一量是開(kāi)始值,第二量是結(jié)束值,如seq(-2,3)是從-2到3,默認(rèn)公差為1。S函數(shù)調(diào)用的一個(gè)很好的特點(diǎn)是它可以使用不同個(gè)數(shù)的自變量,函數(shù)可以對(duì)不同類(lèi)型的自變量給出不同結(jié)果,自變量可以用“自變量名=自變量值”的形式指定。例如,seq(-2,3)可以寫(xiě)成seq(from=-2,to=3)??梢杂靡粋€(gè)by參數(shù)指定等差數(shù)列的增加值,例如:>seq(0,2,0.7)[1]0.00.71.4
也可以寫(xiě)成seq(from=0,to=2,by=0.7)。seq函數(shù)是更一般的等差數(shù)列函數(shù)。S函數(shù)調(diào)用的一個(gè)很好的特點(diǎn)有參數(shù)名的參數(shù)的次序任意,如:
>seq(0,by=0.7,to=2)[1]0.00.71.4可以用length參數(shù)指定數(shù)列長(zhǎng)度,如seq(from=10,length=5)產(chǎn)生10到14。seq函數(shù)還可以用一種seq(along=向量名)的格式,這時(shí)只能用這一個(gè)參數(shù),產(chǎn)生該向量的下標(biāo)序列,如:>x[1]1.004.006.25>seq(along=x)[1]123有參數(shù)名的參數(shù)的次序任意,如:>x另一個(gè)類(lèi)似的函數(shù)是rep,它可以重復(fù)第一個(gè)自變量若干次,例如:
>rep(x,3)[1]1.004.006.251.004.006.251.004.006.25
第一個(gè)參數(shù)名為x,第二個(gè)參數(shù)名為times(重復(fù)次數(shù))。此外numeric(n)可以產(chǎn)生一個(gè)長(zhǎng)度為n的零向量
另一個(gè)類(lèi)似的函數(shù)是rep,它可以重復(fù)第一個(gè)自變量若干次,例如邏輯向量向量可以取邏輯值,如:
>l=c(T,T,F)>l輸出[1]TRUETRUEFALSE
當(dāng)然,邏輯向量往往是一個(gè)比較的結(jié)果,如:
>x輸出
[1]1.004.006.25>l=x>3>l輸出
[1]FALSETRUETRUE一個(gè)向量與常量比較大小,結(jié)果還是一個(gè)向量,元素為每一對(duì)比較的結(jié)果邏輯值。兩個(gè)向量也可以比較,如:>log(10*x)[1]2.3025853.6888794.135167>log(10*x)>x輸出[1]TRUEFALSEFALSE
比較運(yùn)算符包括<,<=,>,>=,==,!=。邏輯向量向量可以取邏輯值,如:一個(gè)向量與常量比較大小,結(jié)果邏輯向量?jī)蓚€(gè)邏輯向量可以進(jìn)行與(&)、或(|)運(yùn)算,結(jié)果是對(duì)應(yīng)元素運(yùn)算的結(jié)果。對(duì)邏輯向量x計(jì)算!x表示取每個(gè)元素的非。例如:>x=c(1,4,6.25,1.6)>(x>1.5)&(x<3)[1]FALSEFALSEFALSETRUE判斷一個(gè)邏輯向量是否都為真值的函數(shù)是all,如:>all(log(10*x)>x)[1]FALSE判斷是否其中有真值的函數(shù)是any,如:
>any(log(10*x)>x)[1]TRUE邏輯向量?jī)蓚€(gè)邏輯向量可以進(jìn)行與(&)、或(|)運(yùn)算,結(jié)果是邏輯向量
函數(shù)is.na(x)用來(lái)判斷x的每一個(gè)元素是否缺失。如>is.na(c(1,NA,3))[1]FALSETRUEFALSE邏輯值可以強(qiáng)制轉(zhuǎn)換為整數(shù)值,TRUE變成1,F(xiàn)ALSE變成0。例如,age>65為老年人,否則為年輕人,可以用c(“young”,“old”)[(age>65)+1]表示。當(dāng)年齡大于65時(shí)age>65等于TRUE,加1則把TRUE轉(zhuǎn)換為數(shù)值型的1,結(jié)果得2,于是返回第二個(gè)下標(biāo)處的“old”。否則等于0+1下標(biāo)處的“young”。age=c(89,20,10,66);c('young','old')[(age>65)+1];[1]"old""young""young""old"邏輯向量函數(shù)is.na(x)用來(lái)判斷x的每一個(gè)元素是否缺字符型向量向量元素可以取字符串值。例如:
>c1=c("x","sin(x)")>c1
輸出
[1]"x""sin(x)">ns=c("Weight","Height","年齡")>ns輸出[1]"Weight""Height""年齡"paste函數(shù)用來(lái)把它的自變量連成一個(gè)字符串,中間用空格分開(kāi),例如:>paste("My","Job")[1]"MyJob">paste('Hi','早')
輸出[1]"Hi早"字符型向量向量元素可以取字符串值。例如:連接的自變量可以是向量,這時(shí)各對(duì)應(yīng)元素連接起來(lái),長(zhǎng)度不相同時(shí)較短的向量被重復(fù)使用。自變量可以是數(shù)值向量,連接時(shí)自動(dòng)轉(zhuǎn)換成適當(dāng)?shù)淖址硎?,例如?gt;paste(c("X","Y"),"=",1:4)[1]"X=1""Y=2""X=3""Y=4"分隔用的字符可以用sep參數(shù)指定,例如:
>paste('result.',1:5,sep="")[1]"result.1""result.2""result.3""result.4""result.5"如果給paste()函數(shù)指定了collapse參數(shù),則把字符串向量的各個(gè)元素連接成一個(gè)字符串,中間用collapse指定的值分隔。比如
>paste(c('a','b'),collapse='.')得到'a.b'。連接的自變量可以是向量,這時(shí)各對(duì)應(yīng)元素連接起來(lái),長(zhǎng)度不相同時(shí)復(fù)數(shù)向量S支持復(fù)數(shù)運(yùn)算。復(fù)數(shù)常量只要用3.5+2.1i這樣的格式即可。復(fù)向量的每一個(gè)元素都是復(fù)數(shù)。可以用complex()函數(shù)生成復(fù)向量(見(jiàn)幫助)。Re()計(jì)算實(shí)部,Im()計(jì)算虛部,
Mod()計(jì)算復(fù)數(shù)模,Arg()計(jì)算復(fù)數(shù)幅角。復(fù)數(shù)向量S支持復(fù)數(shù)運(yùn)算。complexpackage:baseRDocumentationComplexVectorsDescription:BasicfunctionswhichsupportcomplexarithmeticinR.Usage:complex(length.out=0,real=numeric(),imaginary=numeric(),modulus=1,argument=0)plex(x,...)plex(x)Re(x)Im(x)Mod(x)Arg(x)Conj(x)Arguments:length.out:numeric.Desiredlengthoftheoutputvector,inputsbeingrecycledasneeded.real:numericvector.imaginary:numericvector.modulus:plexpackagargument:numericvector.x:anobject,probablyofmode'complex'....:furtherargumentspassedtoorfromothermethods.Details:Complexvectorscanbecreatedwith'complex'.Thevectorcanbespecifiedeitherbygivingitslength,itsrealandimaginaryparts,ormodulusandargument.(Givingjustthelengthgeneratesavectorofcomplexzeroes.)'plex'attemptstocoerceitsargumenttobeofcomplextype:like'as.vector'itstripsattributesincludingnames.Notethat'plex'and'is.numeric'areneverboth'TRUE'.Thefunctions'Re','Im','Mod','Arg'and'Conj'havetheirusualinterpretationasreturningtherealpart,imaginarypart,
argument:numericvector.modulus,argumentandcomplexconjugateforcomplexvalues.Modulusandargumentarealsocalledthe_polarcoordinates_.Ifz=x+iywithrealxandy,'Mod'(z)=sqrt{x^2+y^2},andforphi=Arg(z),x=cos(phi)andy=sin(phi).Theyareallgenericfunctions:methodscanbedefinedforthemindividuallyorviathe'Complex'groupgeneric.Inaddition,theelementarytrigonometric,logarithmicandexponentialfunctionsareavailableforcomplexvalues.'plex'isgeneric:youcanwritemethodstohandlespecificclassesofobjects,seeInternalMethods.modulus,argumentandcomplexReferences:Becker,R.A.,Chambers,J.M.andWilks,A.R.(1988)_TheNewSLanguage_.Wadsworth&Brooks/Cole.Examples:0i^(-3:3)matrix(1i^(-6:5),nr=4)#-allcolumnsarethesame0^1i#acomplexNaN##createacomplexnormalvectorz<-complex(real=rnorm(100),imag=rnorm(100))##oralso(lessefficiently):z2<-1:2+1i*(8:9)
References:>complex(2)[1]0+0i0+0i>complex(2,4,6)[1]4+6i4+6i>complex(1,4,6)[1]4+6iy=1:2+1i*(8:9)>y[1]1+8i2+9i
>Re(y)[1]12>Im(y)[1]89>Mod(y)[1]8.0622589.219544>Arg(y)[1]1.4464411.352127>complex(2)向量下標(biāo)運(yùn)算某一個(gè)元素只要用x[i]的格式訪(fǎng)問(wèn),其中x是一個(gè)向量名,或一個(gè)取向量值的表達(dá)式,如:
>x[1]1.004.006.25>x[2][1]4>(c(1,3,5)+5)[2][1]8可以單獨(dú)改變一個(gè)元素的值,例如:>x[2]<-125>x[1]1.00125.006.25向量下標(biāo)運(yùn)算某一個(gè)元素只要用x[i]的格式訪(fǎng)問(wèn),其中x是一S提供了四種方法來(lái)訪(fǎng)問(wèn)向量的一部分,格式為x[v],x為向量名或向量值的表達(dá)式,v是如下的表示下標(biāo)向量:一、取正整數(shù)值的下標(biāo)向量
v為一個(gè)向量,取值在1到length(x)之間,取值允許重復(fù),例如,
>x[c(1,3)][1]1.006.25>x[1:2][1]1125>x[c(1,3,2,1)][1]1.006.25125.001.00>c("a","b","c")[rep(c(2,1,3),3)][1]"b""a""c""b""a""c""b""a""c"S提供了四種方法來(lái)訪(fǎng)問(wèn)向量的一部分,格式為x[v],x為向量二、取負(fù)整數(shù)值的下標(biāo)向量
v為一個(gè)向量,取值在-length(x)到-1之間,表示扣除相應(yīng)位置的元素。例如:
>x[-(1:2)][1]6.25二、取負(fù)整數(shù)值的下標(biāo)向量三、取邏輯值的下標(biāo)向量
v為和x等長(zhǎng)的邏輯向量,x[v]表示取出所有v為真值的元素,如:
>x輸出:[1]1.00125.006.25>x<10輸出:
[1]TRUEFALSETRUE>x[x<10]輸出:
[1]1.006.25>x[x<0]輸出:
numeric(0)
可見(jiàn)x[x<10]取出所有小于10的元素組成的子集。這種邏輯值下標(biāo)是一種強(qiáng)有力的檢索工具,例如x[sin(x)>0]可以取出x中所有正弦函數(shù)值為正的元素組成的向量。如果下標(biāo)都是假值則結(jié)果是一個(gè)零長(zhǎng)度的向量,顯示為numeric(0)。三、取邏輯值的下標(biāo)向量>x輸出:四、取字符型值的下標(biāo)向量在定義向量時(shí)可以給元素加上名字,例如:
>ages<-c(Li=33,Zhang=29,Liu=18)>ages輸出:
LiZhangLiu332918
>ages[1]輸出:Li33>ages[1]=2>ages[1]輸出:Li2
向量還可用元素名字來(lái)訪(fǎng)問(wèn)元素或元素子集,例如:
>ages[c("Li","Liu")]輸出:
LiLiu3318
四、取字符型值的下標(biāo)向量向量元素名可以后加,例:>ages1=c(33,29,18)>names(ages1)=c("Li","Zhang","Liu")
>ages1輸出
LiZhangLiu332918
S中還可以改變一部分元素的值,例如:>x[1]1.00125.006.25>x[c(1,3)]=c(144,169)>x[1]144125169
注意賦值的長(zhǎng)度必須相同,例外是可以把部分元素賦為一個(gè)統(tǒng)一值:>x[c(1,3)]=0>x[1]01250向量元素名可以后加,例:>ages1=c(33,29要把向量所有元素賦為一個(gè)相同的值而又不想改變其長(zhǎng)度,可以用x[]的寫(xiě)法:>x[]=0
注意這與“x=0”是不同的,前者賦值后向量長(zhǎng)度不變,后者使向量變?yōu)闃?biāo)量0。改變部分元素值的技術(shù)與邏輯值下標(biāo)方法結(jié)合可以定義向量的分段函數(shù),例如:要定義y=f(x)為當(dāng)x<0時(shí)取1-x,否則取1+x,可以用:>y=numeric(length(x))>y[x<0]=1-x[x<0]>y[x>=0]=1+x[x>=0]要把向量所有元素賦為一個(gè)相同的值而又不想改變其長(zhǎng)度,可以用x要定義y=f(x)為當(dāng)x<3.0時(shí)取x,3.0=<x<3.5時(shí)取x+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));y[x<3]=x[x<3];y[(x>=3)&(x<3.5)]=x[(x>=3)&(x<3.5)]+10;y[x>3.5]=x[x>3.5]+20;x;y;要定義y=f(x)為當(dāng)x<3.0時(shí)取x,3.0=<x<3.多維數(shù)組和矩陣
數(shù)組(array)和矩陣(matrix)
數(shù)組(array)帶多個(gè)下標(biāo)的類(lèi)型相同的元素的集合,常用的是數(shù)值型的數(shù)組如矩陣,也可以有其它類(lèi)型(如字符型、邏輯型、復(fù)型數(shù)組)。數(shù)組有一個(gè)特征屬性叫做維數(shù)向量(dim屬性),比如維數(shù)向量有兩個(gè)元素時(shí)數(shù)組為二維數(shù)組(矩陣)。維數(shù)向量的每一個(gè)元素指定了該下標(biāo)的上界,下標(biāo)的下界總為1。一組值只有定義了維數(shù)向量(dim屬性)后才能被看作是數(shù)組。比如:
>a=1:24>a>dim(a)=c(2,4,3)>a
多維數(shù)組和矩陣
數(shù)組(array)和矩陣(matrix)數(shù)數(shù)組(array)和矩陣(matrix)數(shù)組元素的排列次序缺省情況下是采用FORTRAN的數(shù)組元素次序(按列次序),即第一下標(biāo)變化最快,最后下標(biāo)變化最慢,對(duì)于矩陣(二維數(shù)組)則是按列存放。例如,假設(shè)數(shù)組a的元素為1:24,維數(shù)向量為c(2,3,4),則各元素次序?yàn)閍[1,1,1],a[2,1,1],a[1,2,1],a[2,2,1],a[1,3,1],...,a[2,3,4]。用函數(shù)array()或matrix()可以更直觀地定義數(shù)組。array()函數(shù)的完全使用為array(x,dim=length(x),dimnames=NULL),其中x是第一自變量,應(yīng)該是一個(gè)向量,表示數(shù)組的元素值組成的向量。dim參數(shù)可省,省略時(shí)作為一維數(shù)組(但不同于向量)。dimnames屬性可以省略,不省略時(shí)是一個(gè)長(zhǎng)度與維數(shù)相同的列表(list,見(jiàn)后面),列表的每個(gè)成員為一維的名字。數(shù)組(array)和矩陣(matrix)數(shù)組元素的排列次序缺函數(shù)matrix():二維數(shù)組,即矩陣。格式為matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL)
其中第一自變量data為數(shù)組的數(shù)據(jù)向量(缺省值為缺失值NA),nrow為行數(shù),ncol為列數(shù),byrow表示數(shù)據(jù)填入矩陣時(shí)按行次序還是列次序,缺省情況下按列次序。
dimnames缺省是空值,否則是一個(gè)長(zhǎng)度為2的列表,列表第一個(gè)成員是長(zhǎng)度與行數(shù)相等的字符型向量,表示每行的標(biāo)簽,列表第二個(gè)成員是長(zhǎng)度與列數(shù)相同的字符型向量,表示每列的標(biāo)簽。例如,定義一個(gè)3行4列,由1:12按行次序排列的矩陣,可以用:>b<-matrix(1:12,ncol=4,byrow=T)函數(shù)matrix():二維數(shù)組,即矩陣。>b<-matrix(1:12,ncol=4,byrow=T)>b[,1][,2][,3][,4][1,]1234[2,]5678[3,]9101112注意在有數(shù)據(jù)的情況下只需指定行數(shù)或列數(shù)之一。指定的數(shù)據(jù)個(gè)數(shù)允許少于所需的數(shù)據(jù)個(gè)數(shù),這時(shí)循環(huán)使用提供的數(shù)據(jù)。例如:>b<-matrix(0,nrow=3,ncol=4)生成3行4列的元素都為0的矩陣。>b<-matrix(1:12,ncol=4,by數(shù)組下標(biāo)訪(fǎng)問(wèn)數(shù)組的某個(gè)元素,寫(xiě)出數(shù)組名和方括號(hào)內(nèi)用逗號(hào)分開(kāi)的下標(biāo)即可,如a[2,1,2]。在每一個(gè)下標(biāo)位置寫(xiě)一個(gè)下標(biāo)向量,表示對(duì)這一維取出所有指定下標(biāo)的元素,如a[1,2:3,2:3]取出所有第一下標(biāo)為1,第二下標(biāo)為2或3,第三下標(biāo)為2或3的元素。略寫(xiě)某一維的下標(biāo),則表示該維全選。a[,,]或a[]都表示整個(gè)數(shù)組。a[]=0把元素都賦成0。還有一種特殊下標(biāo)是對(duì)于數(shù)組只用一個(gè)下標(biāo)向量(是向量,不是數(shù)組),比如a[3:4],這時(shí)忽略數(shù)組的維數(shù)信息,把下標(biāo)表達(dá)式看作是對(duì)數(shù)組的數(shù)據(jù)向量取子集。數(shù)組下標(biāo)訪(fǎng)問(wèn)數(shù)組的某個(gè)元素,寫(xiě)出數(shù)組名和方括號(hào)內(nèi)用逗號(hào)分開(kāi)不規(guī)則數(shù)組下標(biāo)可以把數(shù)組中的任意位置的元素作為一組訪(fǎng)問(wèn),其方法是用一個(gè)矩陣作為數(shù)組的下標(biāo),例如,我們要把上面的形狀為c(2,3,4)的數(shù)組a的第[1,1,1],[2,2,3],[1,3,4],[2,1,4]號(hào)共四個(gè)元素作為一個(gè)整體訪(fǎng)問(wèn),先定義一個(gè)包含這些下標(biāo)作為行的二維數(shù)組:>b=matrix(c(1,1,1,2,2,3,1,3,4,2,1,4),ncol=3,byrow=T)>b
>a[b]>x1<-c(100,200)>x2<-1:6>x1+x2>x3<-matrix(1:6,nrow=3)>x3>x1+x3不規(guī)則數(shù)組下標(biāo)可以把數(shù)組中的任意位置的元素作為一組訪(fǎng)問(wèn),數(shù)組四則運(yùn)算數(shù)組可以進(jìn)行四則運(yùn)算(+,-,*,/,^),解釋為數(shù)組對(duì)應(yīng)元素的四則運(yùn)算,參加運(yùn)算的數(shù)組一般應(yīng)該是相同形狀的(dim屬性完全相同)。例如,假設(shè)A,B,C是三個(gè)形狀相同的數(shù)組,則>D<-C+2*A/B四則運(yùn)算遵循通常的優(yōu)先級(jí)規(guī)則。形狀不一致的向量和數(shù)組也可以進(jìn)行四則運(yùn)算,一般的規(guī)則是數(shù)組的數(shù)據(jù)向量對(duì)應(yīng)元素進(jìn)行運(yùn)算,把短的循環(huán)使用來(lái)與長(zhǎng)的匹配,并盡可能保留共同的數(shù)組屬性。例如:不規(guī)則運(yùn)算除非你清楚地知道規(guī)則,否則應(yīng)避免使用這樣的辦法(標(biāo)量與數(shù)組或向量的四則運(yùn)算除外)。數(shù)組四則運(yùn)算數(shù)組可以進(jìn)行四則運(yùn)算(+,-,*,/,^)矩陣運(yùn)算
矩陣是二維數(shù)組,應(yīng)用廣泛函數(shù)t(A)返回矩陣A的轉(zhuǎn)置。nrow(A)為矩陣A的行數(shù),ncol(A)為矩陣A的列數(shù)。矩陣之間進(jìn)行普通的加減乘除四則運(yùn)算,即數(shù)組的對(duì)應(yīng)元素之間進(jìn)行運(yùn)算,所以注意A*B不是矩陣乘法而是矩陣對(duì)應(yīng)元素相乘。要進(jìn)行矩陣乘法,使用運(yùn)算符%*%,A%*%B表示矩陣A乘以矩陣B(當(dāng)然要求A的列數(shù)等于B的行數(shù))。例如:>A<-matrix(1:12,nrow=4,ncol=3,byrow=T)>B<-matrix(c(1,0),nrow=3,ncol=2,byrow=T)>A矩陣運(yùn)算矩陣是二維數(shù)組,應(yīng)用廣泛另外,向量用在矩陣乘法中可以作為行向量看待也可以作為列向量看待,這要看哪一種觀點(diǎn)能夠進(jìn)行矩陣乘法運(yùn)算。例如,設(shè)x是一個(gè)長(zhǎng)度為n的向量,A是一個(gè)n*n矩陣,則“x%*%A%*%x”表示二次型。但是,有時(shí)向量在矩陣乘法中的地位并不清楚,比如“x%*%x”就既可能表示內(nèi)積,也可能表示n*n陣。因?yàn)榍罢咻^常用,所以S選擇表示前者,但內(nèi)積最好還是用crossprod(x)來(lái)計(jì)算。要表示n*n陣,可以用“cbind(x)%*%x”或“x%*%rbind(x)”。函數(shù)crossprod(X,Y)表示一般的交叉乘積(內(nèi)積),即X的每一列與Y的每一列的內(nèi)積組成的矩陣。如果X和Y都是向量則是一般的內(nèi)積。只寫(xiě)一個(gè)參數(shù)X的crossprod(X)計(jì)算X自身的內(nèi)積。另外,向量用在矩陣乘法中可以作為行向量看待也可以作為列向量看其它矩陣運(yùn)算還有solve(A,b)解線(xiàn)性方程組,solve(A)求方陣A的逆矩陣,svd()計(jì)算奇異值分解,qr()計(jì)算QR分解,eigen()計(jì)算特征向量和特征值。詳見(jiàn)隨機(jī)幫助,例如:>?qr函數(shù)diag()的作用依賴(lài)于其自變量。diag(vector)返回以自變量(向量)為主對(duì)角元素的對(duì)角矩陣。diag(matrix)返回由矩陣的主對(duì)角元素組成的向量。diag(k)(k為標(biāo)量)返回k階單位陣。其它矩陣運(yùn)算還有solve(A,b)解線(xiàn)性方程組,sol>x=1:3>x[1]123>crossprod(x)[,1][1,]14>cbind(x)%*%x[,1][,2][,3][1,]123[2,]246[3,]369>x%*%rbind(x)[,1][,2][,3][1,]123[2,]246[3,]369>y=diag(x)>y[,1][,2][,3][1,]100[2,]020[3,]003>diag(y)[1]123>diag(3)[,1][,2][,3][1,]100[2,]010[3,]001>x=1:3>x矩陣合并與拉直函數(shù)cbind()把其自變量橫向拼成一個(gè)大矩陣,rbind()把其自變量縱向拼成一個(gè)大矩陣。cbind()的自變量是矩陣或者看作列向量的向量,自變量的高度應(yīng)該相等(對(duì)于向量,高度即長(zhǎng)度,對(duì)于矩陣,高度即行數(shù))。rbind的自變量是矩陣或看作行向量的向量,自變量的寬度應(yīng)該相等(對(duì)于向量,寬度即長(zhǎng)度,對(duì)于矩陣,寬度即列數(shù))。如果參與合并的自變量比其它自變量短則循環(huán)補(bǔ)足后合并。例如:矩陣合并與拉直函數(shù)cbind()把其自變量橫向拼成一個(gè)大矩>x1=rbind(c(1,2),c(3,4))>x1[,1][,2][1,]12[2,]34>x2<-10+x1>x3<-cbind(x1,x2)>x3[,1][,2][,3][,4][1,]121112[2,]341314>x4=rbind(x1,x2)>x4[,1][,2][1,]12[2,]34[3,]1112[4,]1314>cbind(1,x1)[,1][,2][,3][1,]112[2,]134>x1=rbind(c(1,2),c(3,4))>設(shè)a是一個(gè)數(shù)組,要把它轉(zhuǎn)化為向量(去掉dim和dimnames屬性),只要用函數(shù)as.vector(a)返回值就可以了(注意函數(shù)只能通過(guò)函數(shù)值返回結(jié)果而不允許修改它的自變量,比如t(X)返回X的轉(zhuǎn)置矩陣而X本身并未改變)。另一種由數(shù)組得到其數(shù)據(jù)向量的簡(jiǎn)單辦法是使用函數(shù)c(),例如c(a)的結(jié)果是a的數(shù)據(jù)向量。這樣的另一個(gè)好處是c()允許多個(gè)自變量,它可以把多個(gè)自變量都看成數(shù)據(jù)向量連接起來(lái)。例如,設(shè)A和B是兩個(gè)矩陣,則c(A,B)表示把A按列次序拉直為向量并與把B按列次序拉直為向量的結(jié)果連接起來(lái)。一定注意拉直時(shí)是按列次序拉直的。設(shè)a是一個(gè)數(shù)組,要把它轉(zhuǎn)化為向量(去掉dim和dimname>a=rbind(c(1,2),c(3,4))>a[,1][,2][1,]12[2,]34>as.vector(a)[1]1324>b=t(a)>b[,1][,2][1,]13[2,]24>c(a,b)[1]13241234>a=rbind(c(1,2),c(3,4))數(shù)組的維名字?jǐn)?shù)組可以有一個(gè)屬性dimnames保存各維的各個(gè)下標(biāo)的名字,缺省時(shí)為NULL(即無(wú)此屬性)。以矩陣為例,它有兩個(gè)維:行維和列維。比如,設(shè)x為2行3列矩陣,它的行維可以定義一個(gè)長(zhǎng)度為2的字符向量作為每行的名字,它的列維可以定義一個(gè)長(zhǎng)度為3的向量作為每列的名字,屬性dimnames是一個(gè)列表,列表的每個(gè)成員是一個(gè)維名字的字符向量或NULL。例如:
>x<-matrix(1:6,ncol=2,dimnames=list(c("one","two","three"),c("First","Second")),byrow=T)>xFirstSecondone12two34three56數(shù)組的維名字?jǐn)?shù)組可以有一個(gè)屬性dimnames保存各維的各我們也可以先定義矩陣x然后再為dimnames(x)賦值。對(duì)于矩陣,我們還可以使用屬性rownames和colnames來(lái)訪(fǎng)問(wèn)行名和列名。在定義了數(shù)組的維名后我們對(duì)這一維的下標(biāo)就可以用它的名字來(lái)訪(fǎng)問(wèn),>x<-matrix(1:6,ncol=2,byrow=T)>rownames(x)<-c("第一行","第二行","第三行")>colnames(x)<-c("第一列","第二列")>x
第一列第二列第一行12第二行34第三行56>x["第一行","第二列"][1]2>x["第一行",]
第一列第二列
12>x[,"第二列"]
第一行第二行第三行
246我們也可以先定義矩陣x然后再為dimnames(x)賦值。數(shù)組的外積兩個(gè)數(shù)組a和b的外積是由a的每一個(gè)元素與b的每一個(gè)元素搭配在一起相乘得到一個(gè)新元素,這樣得到一個(gè)維數(shù)向量等于a的維數(shù)向量與b的維數(shù)向量連起來(lái)的數(shù)組,即若d為a和b的外積,則dim(d)=c(dim(a),dim(b))。a和b的外積記作a%o%b。如>d<-a%o%b也可以寫(xiě)成一個(gè)函數(shù)調(diào)用的形式:>d<-outer(a,b,'*')注意outer(a,b,f)是一個(gè)一般性的外積函數(shù),它可以把a(bǔ)的任一個(gè)元素與b的任意一個(gè)元素搭配起來(lái)作為f的自變量計(jì)算得到新的元素值,外積是兩個(gè)元素相乘的情況。函數(shù)當(dāng)然也可以是加、減、除,或其它一般函數(shù)。當(dāng)函數(shù)為乘積時(shí)可以省略不寫(xiě)。數(shù)組的外積兩個(gè)數(shù)組a和b的外積是由a的每一個(gè)元素與b的每一數(shù)組的外積例如,我們希望計(jì)算函數(shù)在一個(gè)x和y的網(wǎng)格上的值用來(lái)繪制三維曲面圖,可以用如下方法生成網(wǎng)格及函數(shù)值:>x<-seq(-2,2,length=20)>y<-seq(-pi,pi,length=20)>f<-function(x,y)cos(y)/(1+x^2)>z<-outer(x,y,f)persp(x,y,z)
用這個(gè)一般函數(shù)可以很容易地把兩個(gè)數(shù)組的所有元素都兩兩組合一遍進(jìn)行指定的運(yùn)算。數(shù)組的外積例如,我們希望計(jì)算函數(shù)在一個(gè)x和y的網(wǎng)格上的例子:考慮簡(jiǎn)單的2×2矩陣,其元素均在0,1,...,9中取值。假設(shè)四個(gè)元素a,b,c,d都是相互獨(dú)立的服從離散均勻分布的隨機(jī)變量,我們?cè)O(shè)法求矩陣行列式ad-bc的分布。首先,隨機(jī)變量ad和bc同分布,它的取值由以下外積矩陣給出,每一個(gè)取值的概率均為1/100:>x<-outer(0:9,0:9)這個(gè)語(yǔ)句產(chǎn)生一個(gè)10×10的外積矩陣。為了計(jì)算ad的100個(gè)值(有重復(fù))與bc的100個(gè)值相減得到的10000個(gè)結(jié)果,可以使用如下外積函數(shù):>y<-outer(x,x,"-")這樣得到一個(gè)維數(shù)向量為c(10,10,10,10)的四維數(shù)組,每一個(gè)元素為行列式的一個(gè)可能取值,概率為萬(wàn)分之一。因?yàn)檫@些取值中有很多重復(fù),我們可以用一個(gè)table()函數(shù)來(lái)計(jì)算每一個(gè)值的出現(xiàn)次數(shù)(頻數(shù)):例子:考慮簡(jiǎn)單的2×2矩陣,其元素均在0,1,...>f<-table(y)得到的結(jié)果是一個(gè)帶有元素名的向量f,f的元素名為y的一個(gè)取值,f的元素值為y該取值出現(xiàn)的頻數(shù),比如f[1]的元素名為-81,值為19,表示值-81在數(shù)組d2中出現(xiàn)了19次。通過(guò)計(jì)算length(f)可以知道共有163個(gè)不同值。還可以把這些值繪制一個(gè)頻數(shù)分布圖(除以10000則為實(shí)際概率):>plot(as.numeric(names(f)),f,type="h",+xlab='行列式值',ylab='頻數(shù)')其中as.numeric()把向量f中的元素名又轉(zhuǎn)換成了數(shù)值型,用來(lái)作為作圖的橫軸坐標(biāo),f中的元素值即頻數(shù)作為縱軸,type="h"表示是畫(huà)垂線(xiàn)型圖。>f<-table(y)
plot(as.numeric(names(f)),f,type='h',xlab='行列式值',ylab='頻數(shù)')
plot(as.numeric(names(f)),f,tplot(as.numeric(names(f)),f/10000,type='h',xlab='行列式值',ylab='頻率')
plot(as.numeric(names(f)),f/10數(shù)組的廣義轉(zhuǎn)置可以用aperm(a,perm)函數(shù)把數(shù)組a的各維按perm中指定的新次序重新排列。例如:
>a<-array(1:24,dim=c(2,3,4))>b<-aperm(a,c(2,3,1))
結(jié)果a的第2維變成了b的第1維,a的第3維變成了b的第2維,a的第1維變成了b的第3維。注意這時(shí)a[i1,i2,i3]=b[i2,i3,i1].對(duì)于矩陣a,aperm(a,c(2,1))恰好是矩陣轉(zhuǎn)置。對(duì)于矩陣轉(zhuǎn)置可以簡(jiǎn)單地用t(a)表示。
>c<-aperm(a,c(2,1))數(shù)組的廣義轉(zhuǎn)置可以用aperm(a,perm)函數(shù)把數(shù)組>a=array(1:12,dim=c(2,3,2))>a,,1[,1][,2][,3][1,]135[2,]246,,2[,1][,2][,3][1,]7911[2,]81012>aperm(a,c(3,2,1)),,1[,1][,2][,3][1,]135[2,]7911,,2[,1][,2][,3][1,]246[2,]81012>aperm(a,c(2,1,3)),,1[,1][,2][1,]12[2,]34[3,]56,,2[,1][,2][1,]78[2,]910[3,]1112
>a=array(1:12,dim=c(2,3,2))>aapply函數(shù)對(duì)于向量,我們有sum、mean等函數(shù)對(duì)其進(jìn)行計(jì)算。對(duì)于數(shù)組,如果我們想對(duì)其中一維(或若干維)進(jìn)行某種計(jì)算,可以用apply函數(shù)。其一般形式為:apply(X,MARGIN,FUN,...)其中X為一個(gè)數(shù)組,MARGIN是固定哪些維不變,F(xiàn)UN是用來(lái)計(jì)算的函數(shù)。例如,設(shè)a是n*m矩陣,則apply(a,1,sum)的意義是對(duì)a的各行求和(保留第一維即第一個(gè)下標(biāo)不變),結(jié)果是一個(gè)長(zhǎng)度為3的向量(與第一維長(zhǎng)度相同),而apply(a,2,sum)意義是對(duì)a的各列求和,結(jié)果是一個(gè)長(zhǎng)度為4的向量(與第二維長(zhǎng)度相同)。apply函數(shù)對(duì)于向量,我們有sum、mean等函數(shù)對(duì)其進(jìn)如果函數(shù)FUN的結(jié)果是一個(gè)標(biāo)量,MARGIN只有一個(gè)元素,則apply的結(jié)果是一個(gè)向量,其長(zhǎng)度等于MARGIN指定維的長(zhǎng)度,相當(dāng)于固定MARGIN指定的那一維的每一個(gè)值而把其它維取出作為子數(shù)組或向量送入FUN中進(jìn)行運(yùn)算。如果MARGIN指定了多個(gè)維,則結(jié)果是一個(gè)維數(shù)向量等于dim(X)[MARGIN]的數(shù)組。如果函數(shù)FUN的結(jié)果是一個(gè)長(zhǎng)度為N的向量,則結(jié)果是一個(gè)維數(shù)向量等于c(N,dim(X)[MARGIN])的數(shù)組,注意這時(shí)不論是對(duì)哪一維計(jì)算,結(jié)果都放在了第一維。所以,若我們要把4×3矩陣a的3列分別排序,只要用apply(a,2,sort),這樣對(duì)每一列排序得到一個(gè)長(zhǎng)度為4的向量,用第一維來(lái)引用,結(jié)果的維向量為c(N,dim(a)[2])=c(4,3),保留了列維,恰好得到所需結(jié)果,運(yùn)行如下例:>a<-cbind(c(4,9,1),c(3,7,2))如果函數(shù)FUN的結(jié)果是一個(gè)標(biāo)量,MARGIN只有一個(gè)元素,則>a=cbind(c(4,9,1),c(3,7,2))>a[,1][,2][1,]43[2,]97[3,]12>apply(a,2,sum)[1]1412>apply(a,1,sum)[1]7163>apply(a,2,sort)[,1][,2][1,]12[2,]43[3,]97>apply(a,1,sort)[,1][,2][,3][1,]371[2,]492>t(apply(a,1,sort))[,1][,2][1,]34[2,]79[3,]12>a=cbind(c(4,9,1),c(3,7,2))>>apply(a,2,sort)>但是,如果要對(duì)行排序,則apply(a,1,sort)把a(bǔ)的每一行3個(gè)元素排序后的結(jié)果用第一維來(lái)引用,結(jié)果的維向量為c(N,dim(a)[1])=c(3,4),把原來(lái)的列變成了行,所以t(apply(a,1,sort))才是對(duì)a的每一行排序的結(jié)果。如:>apply(a,1,sort)>t(apply(a,1,sort))
上面我們只用了矩陣(二維數(shù)組)作為例子講解apply的用法。實(shí)際上,apply可以用于任意維數(shù)的數(shù)組,函數(shù)FUN也可以是任意可以接收一個(gè)向量或數(shù)組作為第一自變量的函數(shù)。比如,設(shè)x是一個(gè)維數(shù)向量為c(2,3,4,5)的數(shù)組,則apply(x,c(1,3),sum)可以產(chǎn)生一個(gè)2行4列的矩陣,其每一元素是x中固定第1維和第3維下標(biāo)取出子數(shù)組求和的結(jié)果。>apply(a,2,sort)實(shí)驗(yàn)作業(yè)1、六個(gè)元素a,b,c,d,e,f都是相互獨(dú)立的服從離散均勻分布的隨機(jī)變量,其元素均在1,...,9中取值。設(shè)法求ade-bcf的分布。要求
(1)產(chǎn)生一個(gè)外積矩陣;(2)用一個(gè)table()函數(shù)來(lái)估計(jì)每一個(gè)值的出現(xiàn)概率;(3)繪制一個(gè)頻數(shù)分布圖,一個(gè)頻率分布圖。要求:需給出程序、結(jié)果,存成word文檔
發(fā)送到3用戶(hù)名:rsoft
密碼:123456實(shí)驗(yàn)作業(yè)1、六個(gè)元素a,b,c,d,e,f都是2.(1)寫(xiě)出元素為3,-1.5,3E-10的向量。(2)寫(xiě)出從3開(kāi)始每次增加3,長(zhǎng)度為100的向量。(3)寫(xiě)出(0,2)重復(fù)10次的向量。(4)對(duì)向量x,寫(xiě)出其元素大于等于0小于1的條件。(5)對(duì)向量x,寫(xiě)出其元素都等于0的條件。(6)寫(xiě)出包含12個(gè)月份名稱(chēng)的向量。(7)寫(xiě)出包含方程的根的向量,并寫(xiě)出其幅角的余弦和正弦值。2.(1)寫(xiě)出元素為3,-1.5,3E-10的向量。3.設(shè)x為一個(gè)長(zhǎng)100的整數(shù)向量。比如,x<-floor(100*runif(100))。(1)顯示x第21到30號(hào)元素。(2)把x第31,35,39號(hào)元素賦值為0。(3)顯示x中除了第1號(hào)和第50號(hào)的元素之外的子集。(4)列出x中個(gè)位數(shù)等于3的元素。(5)列出x中個(gè)位數(shù)等于3的元素的下標(biāo)位置。Hint:usewhich()(6)給x的每一個(gè)元素加上名字,為x1到x100。(7)求x的平均值并求每一個(gè)元素減去平均值后的離差,計(jì)算x元素的平方和及離差平方和。(8)把x從大到小排序。計(jì)算x的10%分位數(shù)到90%分位數(shù)之間的距離。3.設(shè)x為一個(gè)長(zhǎng)100的整數(shù)向量。比如,x<-floo4.定義一個(gè)維數(shù)為(3,4,2)的數(shù)組其第一層(第三下標(biāo)為1)取從1開(kāi)始的奇數(shù),第二層取從2開(kāi)始的偶數(shù)。顯示每一層的第2行元素。把第(1,1,1),(2,2,2),(2,2,1)號(hào)元素賦值為零。把第一層加上100,把第二層加上200。分別計(jì)算第一層和第二層的平均值。5.試畫(huà)出任一給定的二元正態(tài)分布的密度函數(shù)圖形。如二元標(biāo)準(zhǔn)正態(tài)分布等4.定義一個(gè)維數(shù)為(3,4,2)的數(shù)組其第一層(第三實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)內(nèi)容學(xué)習(xí)S語(yǔ)言中向量、多維數(shù)組和矩陣的表示方法1、數(shù)據(jù)表示2、應(yīng)用實(shí)例3、實(shí)驗(yàn)作業(yè)S向量、多維數(shù)組和矩陣實(shí)驗(yàn)?zāi)康膶?shí)驗(yàn)內(nèi)容學(xué)習(xí)S語(yǔ)言中向量、多維數(shù)組和矩陣的表示方法1S語(yǔ)言是基于對(duì)象(Object)的語(yǔ)言基本的數(shù)據(jù)類(lèi)型有:向量、矩陣、列表等復(fù)雜的數(shù)據(jù)對(duì)象有:數(shù)據(jù)框?qū)ο?,時(shí)間序列對(duì)象,模型對(duì)象,圖形對(duì)象,等等。S語(yǔ)言表達(dá)式可以使用常量和變量。變量名:由字母、數(shù)字、句點(diǎn)組成,第一個(gè)字符必須是字母,長(zhǎng)度沒(méi)有限制,但區(qū)分大小寫(xiě)。特別要注意句點(diǎn)可以作為名字的合法部分。S語(yǔ)言是基于對(duì)象(Object)的語(yǔ)言S語(yǔ)言表達(dá)式可以使用常常量常量為:數(shù)值型、邏輯型和字符型三種,其中數(shù)值型數(shù)據(jù)又可以分為整型、單精度、雙精度等例如,123,123.45,1.2345e30是數(shù)值型常量;“Weight”,“李明”是字符型;邏輯真值寫(xiě)為T(mén)或TRUE(注意區(qū)分大小寫(xiě),寫(xiě)t或true都沒(méi)意義),邏輯假值寫(xiě)為F或FALSE。復(fù)數(shù)常量就用3.5-2.1i這樣的寫(xiě)法表示。S中的數(shù)據(jù)可以取缺失值,用符號(hào)NA代表缺失值。函數(shù)is.na(x)返回x是否缺失值(返回值T或F)。常量常量為:數(shù)值型、邏輯型和字符型三種,其中S中的數(shù)據(jù)可以向量(Vector)與賦值向量是有相同基本類(lèi)型的元素序列,即一維數(shù)組定義向量的最常用辦法是使用函數(shù)c(),它把若干個(gè)數(shù)值或字符串組合為一個(gè)向量,比如:>x=c(1:3,10:13)>x[1]12310111213S中用符號(hào)“<-”、“=”來(lái)為變量賦值。另一種賦值的辦法是用assign函數(shù),比如>x1=c(1,2)和>assign(“x1”,c(1,2))相同函數(shù)length(x)可以計(jì)算向量x的長(zhǎng)度。向量(Vector)與賦值向量是有相同基本類(lèi)型的元素序列,向量運(yùn)算可以對(duì)向量進(jìn)行加(+)減(-)乘(*)除(/)、乘方(^)運(yùn)算,其含意是對(duì)向量的每一個(gè)元素進(jìn)行運(yùn)算。例如:
>x<-c(1,4,6.25)>y=x*2+1>y[1]3.09.013.5%/%表示整數(shù)除法(比如5%/%3為1),
%%表示求余數(shù)(如5%%3為2)。向量運(yùn)算可以對(duì)向量進(jìn)行加(+)減(-)乘(*)除(/)、乘可以用向量作為函數(shù)自變量,
sqrt、log、exp、sin、cos、tan等函數(shù)都可以用向量作自變量,結(jié)果是對(duì)向量的每一個(gè)元素取相應(yīng)的函數(shù)值函數(shù)min和max分別取向量自變量的最小值和最大值,函數(shù)sum計(jì)算向量自變量的元素和,函數(shù)mean計(jì)算均值,函數(shù)var計(jì)算樣本方差(分母為n-1),函數(shù)sd計(jì)算標(biāo)準(zhǔn)差(在Splus中用sqrt(var())計(jì)算)如果求var(x)而x是矩陣,則結(jié)果為樣本協(xié)方差陣。(行向量為觀測(cè)值)可以用向量作為函數(shù)自變量,隨機(jī)向量記
X=(X1
,
X2,…,
Xp)'
為p維隨機(jī)向量,對(duì)X=(X1
,
X2,…,
Xp)'
進(jìn)行一次觀測(cè),
得觀測(cè)值:(x11
,
x12,…,
x1p)=X'(1),
它是一個(gè)樣品。隨機(jī)向量記X=(X1,X2對(duì)X=(X1
,
X2,…,
Xp)'進(jìn)行觀測(cè)n次,
得n個(gè)樣品:
X'(i)=(xi1
,
xi2,…,
xi
p),i=1,…,n
它是一個(gè)樣本.用矩陣記為如下稱(chēng)為樣本數(shù)據(jù)陣.對(duì)X=(X1,X2,…,Xp)'進(jìn)行觀多元總體樣本的數(shù)字特征其中
(1)樣本均值向量X
:多元總體樣本的數(shù)字特征其中多元總體樣本的數(shù)字特征其中(2)樣本離差陣(又稱(chēng)交叉乘積陣)A:多元總體樣本的數(shù)字特征其中(2)樣本離差陣(又稱(chēng)交叉乘積(3)樣本協(xié)方差陣S:
多元總體樣本的數(shù)字特征其中稱(chēng)為變量Xi的樣本方差;樣本方差的平方根ˉ
稱(chēng)為變量Xi的樣本標(biāo)準(zhǔn)差.sii(3)樣本協(xié)方差陣S:多元總體樣本的數(shù)字特征其中稱(chēng)為(4)樣本相關(guān)陣R:
多元總體樣本的數(shù)字特征其中(4)樣本相關(guān)陣R:多元總體樣本的數(shù)字特征其中sort(x)返回x的元素從小到大排序的結(jié)果向量
order(x)返回使得x從小到大排列的元素下標(biāo)向量(x[order(x)]等效于sort(x))。
>x=c(2,4,8,6,10)>order(x)[1]12435>x[order(x)][1]246810任何數(shù)與缺失值的運(yùn)算結(jié)果仍為缺失值。例如,>2*c(1,NA,2)[1]2NA4>sum(c(1,NA,2))[1]NAsort(x)返回x的元素從小到大排序的結(jié)果向量任何數(shù)與缺失產(chǎn)生有規(guī)律的數(shù)列在S中很容易產(chǎn)生一個(gè)等差數(shù)列。例如,1:n產(chǎn)生從1到n的整數(shù)列,
-2:3產(chǎn)生從-2到3的整數(shù)列,
5:2產(chǎn)生反向的數(shù)列:注意1:n-1不是代表1到n-1而是向量1:n減去1,>1:n-1[1]01234>1:(n-1)[1]1234產(chǎn)生有規(guī)律的數(shù)列在S中很容易產(chǎn)生一個(gè)等差數(shù)列。seq函數(shù)是更一般的等差數(shù)列函數(shù)。如只指定一個(gè)自變量n>0,則seq(n)相當(dāng)于1:n。指定兩個(gè)自變量時(shí),第一量是開(kāi)始值,第二量是結(jié)束值,如seq(-2,3)是從-2到3,默認(rèn)公差為1。S函數(shù)調(diào)用的一個(gè)很好的特點(diǎn)是它可以使用不同個(gè)數(shù)的自變量,函數(shù)可以對(duì)不同類(lèi)型的自變量給出不同結(jié)果,自變量可以用“自變量名=自變量值”的形式指定。例如,seq(-2,3)可以寫(xiě)成seq(from=-2,to=3)??梢杂靡粋€(gè)by參數(shù)指定等差數(shù)列的增加值,例如:>seq(0,2,0.7)[1]0.00.71.4
也可以寫(xiě)成seq(from=0,to=2,by=0.7)。seq函數(shù)是更一般的等差數(shù)列函數(shù)。S函數(shù)調(diào)用的一個(gè)很好的特點(diǎn)有參數(shù)名的參數(shù)的次序任意,如:
>seq(0,by=0.7,to=2)[1]0.00.71.4可以用length參數(shù)指定數(shù)列長(zhǎng)度,如seq(from=10,length=5)產(chǎn)生10到14。seq函數(shù)還可以用一種seq(along=向量名)的格式,這時(shí)只能用這一個(gè)參數(shù),產(chǎn)生該向量的下標(biāo)序列,如:>x[1]1.004.006.25>seq(along=x)[1]123有參數(shù)名的參數(shù)的次序任意,如:>x另一個(gè)類(lèi)似的函數(shù)是rep,它可以重復(fù)第一個(gè)自變量若干次,例如:
>rep(x,3)[1]1.004.006.251.004.006.251.004.006.25
第一個(gè)參數(shù)名為x,第二個(gè)參數(shù)名為times(重復(fù)次數(shù))。此外numeric(n)可以產(chǎn)生一個(gè)長(zhǎng)度為n的零向量
另一個(gè)類(lèi)似的函數(shù)是rep,它可以重復(fù)第一個(gè)自變量若干次,例如邏輯向量向量可以取邏輯值,如:
>l=c(T,T,F)>l輸出[1]TRUETRUEFALSE
當(dāng)然,邏輯向量往往是一個(gè)比較的結(jié)果,如:
>x輸出
[1]1.004.006.25>l=x>3>l輸出
[1]FALSETRUETRUE一個(gè)向量與常量比較大小,結(jié)果還是一個(gè)向量,元素為每一對(duì)比較的結(jié)果邏輯值。兩個(gè)向量也可以比較,如:>log(10*x)[1]2.3025853.6888794.135167>log(10*x)>x輸出[1]TRUEFALSEFALSE
比較運(yùn)算符包括<,<=,>,>=,==,!=。邏輯向量向量可以取邏輯值,如:一個(gè)向量與常量比較大小,結(jié)果邏輯向量?jī)蓚€(gè)邏輯向量可以進(jìn)行與(&)、或(|)運(yùn)算,結(jié)果是對(duì)應(yīng)元素運(yùn)算的結(jié)果。對(duì)邏輯向量x計(jì)算!x表示取每個(gè)元素的非。例如:>x=c(1,4,6.25,1.6)>(x>1.5)&(x<3)[1]FALSEFALSEFALSETRUE判斷一個(gè)邏輯向量是否都為真值的函數(shù)是all,如:>all(log(10*x)>x)[1]FALSE判斷是否其中有真值的函數(shù)是any,如:
>any(log(10*x)>x)[1]TRUE邏輯向量?jī)蓚€(gè)邏輯向量可以進(jìn)行與(&)、或(|)運(yùn)算,結(jié)果是邏輯向量
函數(shù)is.na(x)用來(lái)判斷x的每一個(gè)元素是否缺失
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)民致富種植策略方案
- 農(nóng)業(yè)技術(shù)推廣區(qū)域合作方案
- 中國(guó)污水處理行業(yè)報(bào)告
- 制藥行業(yè)生物制藥工藝優(yōu)化方案
- 辦公室裝修風(fēng)險(xiǎn)免責(zé)協(xié)議
- 垃圾焚燒發(fā)電股
- 電信行業(yè)網(wǎng)絡(luò)優(yōu)化與安全防護(hù)策略方案
- 項(xiàng)目可行性研究報(bào)告指南
- 季度營(yíng)銷(xiāo)活動(dòng)策劃方案
- 汽車(chē)銷(xiāo)售與服務(wù)營(yíng)銷(xiāo)策略試題
- 湖北省中小學(xué)教師水平能力測(cè)試題
- 碩士研究生專(zhuān)業(yè)研究方向證明(模板)
- 中國(guó)某銀行實(shí)物貴金屬業(yè)務(wù)與黃金定投業(yè)務(wù)管理辦法
- 2023年社區(qū)考試話(huà)題社區(qū)工作者應(yīng)具備的基本素質(zhì)
- 淺談孩子暑假學(xué)習(xí)的重要性及策略 論文
- 012焊接工藝評(píng)定(氬弧焊)
- 《行政事業(yè)單位內(nèi)部控制規(guī)范》解讀
- 1-5《鳳仙花開(kāi)花了》課件
- 七個(gè)時(shí)代八個(gè)約
- 民營(yíng)醫(yī)院開(kāi)發(fā)基本知識(shí)
- 新產(chǎn)品開(kāi)發(fā)進(jìn)度表
評(píng)論
0/150
提交評(píng)論