




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、01020304050-2-1012Simple Use of Color In a PlotJust a Whisper of a Label-1.0-0.50.00.51.0sin and cosPhase Angle sinSepal.Length2.03.04.00.51.52.54.55.56.57.52.03.04.0Sepal.WidthPetal.Length12345674.55.56.57.50.51.52.51234567Petal.WidthEdgar Andersons Iris DataMath can be beautiful .cosr2er 6R向量、多維數組
2、和矩陣向量、多維數組和矩陣1 1、數據表示數據表示2 2、應用實例、應用實例3 3、實驗練習、實驗練習實驗內容實驗內容實驗目的實驗目的學習學習R中向量、多維數組和矩陣的表示方法中向量、多維數組和矩陣的表示方法常量常量 常量為:數值型、邏輯型和字符型三種,其中 數值型數據如:123,123.45,1.2345e30 字符型如:“Weight”,“李明”是字符型; 邏輯真值寫為T或TRUE(注意區分大小寫,寫t或true都沒意義),邏輯假值寫為F或FALSE。 復數常量就用3.5-2.1i這樣的寫法表示。 R中的數據可以取缺失值,用符號NA代表缺失值。 函數is.na(x)返回x是否缺失值(返回值
3、T或F)。向量(向量(Vector)與賦值)與賦值 向量是有相同基本類型的元素序列,即一維數組 定義向量的最常用辦法是使用函數c(), 它把若干個數值或字符串組合為一個向量, 比如: x x 1 1 2 3 10 11 12 13 R中用符號“ 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), %表示求
4、余數(如5 % 3為2)。 可以用向量作為函數自變量, sqrt、log、exp、sin、cos、tan等函數都可以用向量作自變量,結果是對向量的每一個元素取相應的函數值 函數min和max分別取向量自變量的最小值和最大值, 函數sum計算向量自變量的元素和, 函數mean計算均值, 函數var計算樣本方差(分母為n-1), 函數sd計算標準差 如果求var(x)而x是矩陣,則結果為樣本協方差陣。 (行向量為觀測值) 負數開根號要補充成復數形式 sqrt(-4)1 NaN warning:sqrt(-4+0i)1 2isort(x)返回x的元素從小到大排序的結果向量 order(x)返回使得x
5、從小到大排列的元素下標向量(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 最大最小值及其查詢 xmin(x) 1 2 max(x) 1 10which.min(x) 1 4which.max(x) 1 5 range(x)1 1 10產生有規律的數列產生有規律的數列 在R中很容易產生一個等差數列。 例如,1:n產生從1到n的整數列, -2:3產生從
6、-2到3 的整數列, 5:2產生反向的數列: 注意優先級 1: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 。 R函數調用的一個很好的特點是它可以使用不同個數的自變量,函數可以對不同類型的自變量給出不同結果,自變量可以用“自變量名自變量值”的形式指定。例如,seq(-2,3)可以寫成seq(from=-2, to=3)。可以用一個by參
7、數指定等差數列的增加值,例如: seq(0, 2, 0.7) 1 0.0 0.7 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 也可以加入by這個參數 另一個類似
8、的函數是rep,它可以重復第一個自變量若干次,例如: rep(x,3) 1 1.00 4.00 6.25 1.00 4.00 6.25 1.00 4.00 6.25 第一個參數名為x,第二個參數名為times(重復次數)。 rep(x, each=3)1 1.00 1.00 1.00 4.00 4.00 4.00 6.25 6.25 6.25此外numeric(n)可以產生一個長度為n的零向量 向量可以取邏輯值,如: a = c(T, T, F) a 1 TRUE TRUE FALSE 當然,邏輯向量往往是一個比較的結果,如: x b = x 3 b 1 FALSE TRUE TRUE 邏輯向
9、量邏輯向量 一個向量與常量比較大小,結果還是一個向量,元素為每一對比較的結果邏輯值。 兩個向量也可以比較,如: log(10*x) 1 2.302585 3.688879 4.135167 log(10*x) x 1 TRUE FALSE FALSE 比較運算符包括,=,=,!=。 兩個邏輯向量可以進行與(&)、或(|)運算,結果是對應元素運算的結果。對邏輯向量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
10、) 1 TRUE 函數is.na(x)用來判斷x的每一個元素是否缺失。 如 is.na(c(1, NA, 3) 1 FALSE TRUE FALSE 邏輯值可以強制轉換為整數值,TRUE變成1,FALSE變成0。 例如,age65為老年人,否則為年輕人, 可以用c(“young”, “old”)(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 youn
11、g old 缺失數據缺失數據 NA表示缺失、NaN表示不確定的數 注意下面例子的比較 x is.nan(x) 1 FALSE TRUE FALSE FALSE is.na(x) 1 FALSE TRUE FALSE TRUE is.finite(x) 1 TRUE FALSE FALSE FALSE is.infinite(x) 1 FALSE FALSE TRUE FALSE字符型向量字符型向量 向量元素可以取字符串值。例如: c1 =c(x, sin(x) c1 1 x sin(x) ns = c(Weight, Height, “age) ns 1 Weight Height age p
12、aste函數用來把它的自變量連成一個字符串,中間用空格分開,例如: paste(My, Job) 1 My Job paste(Hi,Good morning) 1 Hi Good morning 連接的自變量可以是向量,這時各對應元素連接起來,長度不相同時較短的向量被重復使用。自變量可以是數值向量,連接時自動轉換成適當的字符串表示,例如: 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 re
13、sult.4 result.5 如果給paste()函數指定了collapse參數, 則把字符串向量的各個元素連接成一個字符串, 中間用collapse指定的值分隔。比如 paste(c(a, b), collapse=.) 1 a.b 還可以和日期函數一起合并,顯示當天的日歷和時間 paste(“Today is”, date() 1 “Today is Mon Sep 20 19:20:35 2010”復數向量復數向量 R支持復數運算。 復數常量只要用3.5+2.1i這樣的格式即可。 復向量的每一個元素都是復數。 Re()計算實部,Im()計算虛部, Mod() 計算復數模,Arg()計算
14、復數幅角。 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.062258 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 可以單獨改變一個元素
15、的值,例如: x2 x 1 1.00 125.00 6.25 R提供了四種方法來訪問向量的一部分,格式為xv,x為向量名或向量值的表達式,v是如下的表示下標向量:一、取正整數值的下標向量一、取正整數值的下標向量 v為一個向量,取值在1到length(x)之間,取值允許重復,例如, xc(1,3) 1 1.00 6.25 x1:2 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
16、)到1之間,表示扣除相應位置的元素。例如: x-(1:2) 1 6.25 x-3 1 1.00 125.00三、取邏輯值的下標向量三、取邏輯值的下標向量 v為和x等長的邏輯向量,xv表示取出所有v為真值的元素,如: x 1 1.00 125.00 6.25 x xx xx0可以取出x中所有正弦函數值為正的元素組成的向量。四、取字符型值的下標向量四、取字符型值的下標向量 在定義向量時可以給元素加上名字,例如: ages ages 1 Li Zhang Liu 33 29 18 ages1 1 Li 33 ages1=2 # 可以改變向量中字符型元素取值 ages1 1 Li 2 向量還可用元素名
17、字來訪問元素或元素子集, agesc(Li, Liu) 1 Li Liu 33 18 向量元素名可以后加,利用names(), 例如: ages1 = c(33, 29, 18) names(ages1) = c(Li, Zhang, Liu) ages1 1 Li Zhang Liu 33 29 18 R中還可以改變一部分元素的值,例如: 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 要把向量所有元素賦為一個相同的
18、值而又不想改變其長度,可以用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=xx y yx3 - xxy(x=3)&(x3.5) =3)&(xyx3.5 3.5+20;x;1 0.5 -1.0 1.0 2.0 3.0 4.0 1.0 2.0 3.0 4.0y; 1 0.5
19、-1.0 1.0 2.0 13.0 24.0 1.0 2.0 13.0 24.0對象和它的模式與屬性對象和它的模式與屬性 R是一種基于對象(object)的語言,它的對象包含了若干元素作為其數據,還有一些特殊數據稱為屬性(attribute),一個向量是一個對象,一個圖形也是一個對象。 R的對象分為單純型(atomic)和復合型(recursive) 單純型:所有的元素都是同一種基本類型,如字符串向量,數值型向量都是單純型 復合型:元素可以是不同類型的對象,如列表(list),可以由不同類型的對象組成其元素,元素可以以它們各自單獨的方式被列出。 注意:空向量也有自己的模式,如: 空的字符串會顯
20、示為:character(0) 空的數值向量會顯示為:numeric(0) R的對象還有一種特殊的空值型(null) z x mode(x) 1 “numeric” mode(x1) 1 “logical” length(x) 1 3 長度為零的向量 numeric()或者numeric(0) character()或者character(0) R允許強制轉換對象的類型 x x y-numeric( ); y2 z2 x4 x x even even length(even); 1 5 length(even) fruit mode(fruit) 1 “numeric” attributes
21、(fruit) $ names 1 apple orange attributes (x) NULL 用attr()可以對對象的特有屬性進行賦值 attr(fruit, names) fruit peanut almond 1 2 attr(fruit, type) fruit; peanut almond 1 2 attributes(fruit) $ names 1 peanut almond $ type 1 nut多維數組和矩陣多維數組和矩陣數組(array)和矩陣(matrix) 數組(array): 帶多個下標的類型相同的元素的集合,常用的是數值型的數組如矩陣,也可以有其它類型(如
22、字符型、邏輯型、復型數組)。 數組有一個特征屬性叫做維數向量(dim屬性),比如維數向量有兩個元素時數組為二維數組(矩陣)。維數向量的每一個元素指定了該下標的上界,下標的下界總為1。 向量只有定義了維數向量(dim屬性)后才能被看作是數組。 來看下面兩個例子例例 a=1:24 a dim(a)=c(6,4) #a是6行4列結構的數組 a ,1 ,2 ,3 ,4 1, 1 7 13 19 2, 2 8 14 20 3, 3 9 15 21 4, 4 10 16 22 5, 5 11 17 23 6, 6 12 18 24 dim(a) a=1:24 a dim(a)=c(2,4,3) a , ,
23、 1 ,1 ,2 ,3 ,41, 1 3 5 72, 2 4 6 8, , 2 ,1 ,2 ,3 ,41, 9 11 13 152, 10 12 14 16, , 3 ,1 ,2 ,3 ,41, 17 19 21 232, 18 20 22 24 數組元素的排列次序缺省情況下是采用第一下標變化最快,最后下標變化最慢的順序存放的;對于矩陣(二維數組)則是按列存放。例如,假設數組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()可以更直觀地定義數組
24、。array()函數的完全使用為 array(x, dim=length(x), dimnames=NULL) 其中x是第一自變量,應該是一個向量,表示數組的元素值組成的向量。dim參數可省,省略時作為一維數組(但不同于向量)。dimnames屬性可以省略,不省略時是一個長度與維數相同的列表,列表的每個成員為一維的名字。 比較下面幾個命令: x y dim(x) NULLdim(y) 1 4 z z ,1 ,2 1, 1 3 2, 2 4 z b - matrix(1:12, ncol=4, byrow=T) ; b ,1 ,2 ,3 ,4 1, 1 2 3 4 2, 5 6 7 8 3, 9
25、 10 11 12 b b b a dim(a) a2,1,2 1 10 在每一個下標位置寫一個下標向量,表示對這一維取出所有指定下標的元素,如a1, 2:3, 2:3取出所有第一下標為1,第二下標為2或3,第三下標為2或3的元素。 a1, 2:3, 2:3 ,1 ,2 1, 11 19 2, 13 21 略寫某一維的下標,則表示該維全選。 a1, , ,1 ,2 ,3 1, 1 9 17 2, 3 11 19 3, 5 13 21 4, 7 15 23 a, 2 , ,1 ,2 ,3 1, 3 11 19 2, 4 12 20 a , , 或a都表示整個數組。 a =0 把元素都賦成0。 還
26、有一種特殊下標是對于數組只用一個下標向量(是向量,不是數組),比如a3:4 ,這時忽略數組的維數信息,把下標表達式看作是對數組的數據向量取子集。 a3:4 1 3 4不規則數組下標不規則數組下標 可以把數組中的任意位置的元素作為一組訪問, 其方法是用一個矩陣作為數組的下標, 例如,我們要把上面的形狀為c(2,4,3)的數組a的第1,1,1, 2,2,3, 1,4,3, 2,4,1號共四個元素作為一個整體訪問,先定義一個包含這些下標作為行的二維數組: b = matrix(c(1,1,1, 2,2,3, 1,4,3, 2,4,1), ncol=3, byrow=T) b ab 1 1 20 23
27、 8 x1 x2 x1+x2 1 101 202 103 204 105 206 x3 x3 x1+x3 ,1 ,21, 101 2042, 202 1053, 103 206數組四則運算數組四則運算 數組可以進行四則運算(+,, *, /,),解釋為數組對應元素的四則運算,參加運算的數組一般應該是相同形狀的(dim屬性完全相同)。例如,假設A, B, C是三個形狀相同的數組,則 D A B A%*%B 另外,向量用在矩陣乘法中可以作為行向量看待也可以作為列向量看待,這要看哪一種觀點能夠進行矩陣乘法運算。 例如,設x是一個長度為n的向量,A是一個n*n 矩陣,則“x %*% A %*% x”表
28、示二次型 。 但是,有時向量在矩陣乘法中的地位并不清楚,比如“x %*% x”就既可能表示內積 , 也可能表示n*n 陣 。因為前者較常用,所以R選擇表示前者,但內積最好還是用crossprod(x)來計算。要表示 n*n陣,可以用“cbind(x) %*% x”或“x %*% rbind(x) ”。 函數crossprod(X, Y)表示一般的交叉乘積(內積) ,即X的每一列與Y的每一列的內積組成的矩陣。如果X和Y都是向量則是一般的內積。只寫一個參數X的crossprod(X)計算X自身的內積 。 其它矩陣運算還有solve(A,b)解線性方程組 ,solve(A)求方陣A的逆矩陣,svd(
29、)計算奇異值分解,qr()計算QR分解,eigen()計算特征向量和特征值。詳見隨機幫助,例如: ?qr 函數diag()的作用依賴于其自變量。 diag(vector)返回以自變量(向量)為主對角元素的對角矩陣。 diag(matrix)返回由矩陣的主對角元素組成的向量。 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
30、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 A b x A.inverse det(A) 1 -3 svd.A attach(svdA) u%*% diag(d)%*%t(v) ,1 ,2 ,3 1, 1 2 3 2, 4 5 6 3, 7 8 10矩陣合并與拉直矩陣合并與拉直 函數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,
32、1 1 2 2, 1 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)
33、, c(3,4) a ,1 ,2 1, 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是一個列表,列表的每個成員是一個維名字的字符向量或N
34、ULL。例如: x x First Second one 1 2 two 3 4 three 5 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
35、的每一個元素搭配在一起相乘得到一個新元素,這樣得到一個維數向量等于a的維數向量與b的維數向量連起來的數組, a b a%o%b ,1 ,2 ,3 1, 2 5 7 2, 4 10 14 3, 6 15 21 注意:b%o%a=t(a%o%b) 即若d為a和b的外積,則dim(d)=c(dim(a), dim(b)。 a和b的外積記作 a %o% b。如 d d outer(a,b,+) ,1 ,2 ,31, 3 6 82, 4 7 93, 5 8 10 例如,我們希望計算函數 在一個x和y的網格上的值用來繪制三維曲面圖,可以用如下方法生成網格及函數值: x y f z x y f plot(a
36、s.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=頻率)數組的廣義轉置數組的廣義轉置 可以用aperm(a, perm)函數把數組a的各維按perm中指定的新次序重新排列。例如: a
37、 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、mean等函數對其進行計算。對于數組,如果我們想對其中一維(或若干維)進行某種計算,可以用apply函數。其一般形式為: apply(X, MARGIN, FUN, .) 其中X為一個數組,MARGIN是固定哪些維不變,FUN是用來計算的函數。例如,設a是n*m 矩陣,則apply(a, 1, sum)的意義是對a的各行求和(保留第一維即第一個下標不變),結果是一個長度為n的向量(與第一維長度相同),而apply(a, 2, sum)意義是對a的各列求和,結果是一個長度為m的向量(與第二維長度相同)。 a ,1 ,2 1, 4
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論