《統(tǒng)計(jì)分析軟件:使用R與Python》 課件 第2章 R 語(yǔ)言編程基礎(chǔ)_第1頁(yè)
《統(tǒng)計(jì)分析軟件:使用R與Python》 課件 第2章 R 語(yǔ)言編程基礎(chǔ)_第2頁(yè)
《統(tǒng)計(jì)分析軟件:使用R與Python》 課件 第2章 R 語(yǔ)言編程基礎(chǔ)_第3頁(yè)
《統(tǒng)計(jì)分析軟件:使用R與Python》 課件 第2章 R 語(yǔ)言編程基礎(chǔ)_第4頁(yè)
《統(tǒng)計(jì)分析軟件:使用R與Python》 課件 第2章 R 語(yǔ)言編程基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩99頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

2.1HelloWorld!2.2R語(yǔ)言運(yùn)行2.3R語(yǔ)言變量和常量2.4R語(yǔ)言對(duì)象基本操作2.5R語(yǔ)言數(shù)據(jù)類型2.6R語(yǔ)言流程控制2.7R語(yǔ)言自定義函數(shù)第2章

R語(yǔ)言編程基礎(chǔ)R語(yǔ)言基礎(chǔ)R語(yǔ)言變量和常量R語(yǔ)言數(shù)據(jù)對(duì)象變量、向量、數(shù)組、矩陣、數(shù)據(jù)框、列表控制、循環(huán)if\switch條件語(yǔ)句for\while\repeat循環(huán)語(yǔ)句R語(yǔ)言自定義函數(shù)R語(yǔ)言運(yùn)行2.1R的HelloWorld>newstr<-"Hello,World!">print(newstr)

[1]"Hello,World!"

>#myfirstRcode提示符注釋賦值2.2R語(yǔ)言運(yùn)行當(dāng)R啟動(dòng)時(shí),以下常用packages自動(dòng)加載:–base:基本函式(IO,敘述統(tǒng)計(jì),etc.)–stats:常用統(tǒng)計(jì)分析(t.test,anova,etc.)–methods:定義classesofobjects–utils:基本程序編寫工具–graphics:基本繪圖工具–grDevices:基本繪圖接口–datasets:數(shù)據(jù)范例編寫程序:「文件」「建立新的程序腳本」或直接于「>」后編寫空一行或用分號(hào)「;」將指令分開(kāi)套用已寫好的程序:「文件」「開(kāi)啟程序腳本」修改或繼續(xù)編寫程序:「文件」「開(kāi)啟程序腳本」程序包(package)加載:「程序包」「加載程序包」清理窗口:右鍵「清除窗口」「←」、「→」或「=」表輸入前面已執(zhí)行完的指令:「↑」逐一顯示+:程序未完結(jié)就換行會(huì)顯示「+」提醒,欲結(jié)束按「Esc」英文字母大小寫視為不同的符號(hào)#井字號(hào)之后為批注,程序不會(huì)執(zhí)行結(jié)束R程序:直接關(guān)閉或指令「q()」ls()列出工作空間中的對(duì)象rm()刪除工作空間中的對(duì)象rm(list=ls())刪除空間中所有對(duì)象save.image()保存工作鏡像sink()將運(yùn)行結(jié)果保存到指定文件中g(shù)etwd()顯示當(dāng)前工作文件夾setwd()設(shè)定工作文件夾R語(yǔ)言腳本是一系列命令可以先批量的編好程序,或者對(duì)別人已經(jīng)編好的程序進(jìn)行修改。之后輸入到控制臺(tái)進(jìn)行調(diào)試,以滿足數(shù)據(jù)分析的需求語(yǔ)言高亮顯示在代碼較多的情況下,有時(shí)需要對(duì)行數(shù)、函數(shù)、括號(hào)、函數(shù)選項(xiàng)等進(jìn)行高亮顯示,設(shè)置成不同的顏色,以減少錯(cuò)誤腳本編輯器R自帶的腳本編輯器RStudio自帶的腳本編輯器Editplus(

)Ultraedit(/)Emacs(/software/emacs/)Notepad++(/)記事本或?qū)懽职宓鹊纫粋€(gè)R語(yǔ)言腳本rate<-c(20,22,24,26,28,30,32,34,36,38,40,42)impurity<-c(8.4,9.5,11.8,10.4,13.3,14.8,13.2,14.7,16.4,16.5,18.9,18.5)plot(impurity~rate)reg<-lm(impurity~rate)abline(reg,col="red")summary(reg)如何運(yùn)行R腳本程序通過(guò)source()函數(shù)運(yùn)行source(“d:/regression.r”)通過(guò)R腳本編輯器運(yùn)行路徑:RGui>File>OpenScript#Ctrl+R運(yùn)行直接粘貼到R控制臺(tái)ctrl+c,ctrl+v2.3R語(yǔ)言常量和變量常量是其值不變的量,包括1234,"abc"等數(shù)值、"rlang"等字符串和邏輯值等基本類型。其中,邏輯真值寫為T或TRUE(注意區(qū)分大小寫,寫t或true都沒(méi)意義),邏輯假值寫為F或FALSE。R中還有一些特殊類型的常量,其中NULL表示空值NA(NotAvailable的意思)表示缺失數(shù)據(jù)Inf和-Inf表示正無(wú)窮和負(fù)無(wú)窮NaN(NotaNumber的意思)表示不是數(shù)字的值變量是其值可變的量,如x<-3,x就是一個(gè)變量,當(dāng)x<-4時(shí),x的值被重新賦值為4。變量名由字母、數(shù)字和下劃線組成,變量的第一個(gè)字符為字母。R語(yǔ)言變量命名的大原則是:只有字母(區(qū)分大小寫)、數(shù)字、“_”(下劃線)、“.”(英文句號(hào))可以出現(xiàn)。變量長(zhǎng)度沒(méi)有限制,但不能有中文、空格、連字符”-“的存在。變量命名還要滿足以下條件:不能以數(shù)字或下劃線開(kāi)頭開(kāi)頭必須是英文字母或者點(diǎn)可以以點(diǎn)號(hào)開(kāi)頭,但點(diǎn)號(hào)后面的符號(hào)不能是數(shù)字符號(hào)說(shuō)明 1)> 命令或運(yùn)算提示符 2)+ 續(xù)行符 3)# 注釋、說(shuō)明語(yǔ)句字符賦值符號(hào) 1)<- 2)=R語(yǔ)言常見(jiàn)運(yùn)算符+ 加號(hào)- 減號(hào)* 乘號(hào)/ 除號(hào)%%取模%/%整除^ 乘方運(yùn)算優(yōu)先級(jí)別遞增+-*/%%,%/%^TRUE==1;FALSE==0基本算術(shù)運(yùn)算> 大于< 小于>= 大于等于 <= 小于等于== 等于!= 不等于

比較運(yùn)算得到的結(jié)果是邏輯常量TRUE(真)和FALSE(假)。比較運(yùn)算符!x 邏輯非當(dāng)前邏輯值取反運(yùn)算。x&y邏輯與如果兩個(gè)表達(dá)式的值均為TRUE,結(jié)果才為TRUE,否則為FALSE。x&&y邏輯與

若x,y為向量只比較第一個(gè)元素。x|y邏輯或如果x和y的值均為FALSE,結(jié)果為FALSE,否則為TRUE。向量對(duì)每個(gè)元素進(jìn)行比較。x||y邏輯或若x和y為向量只比較第一個(gè)元素。xor(x,y)異或兩個(gè)邏輯值不相同,則異或結(jié)果為真。反之,為假。邏輯運(yùn)算符思考題

下列()表示的是變量。A.123 B.TRUE C.Inf D.abc下列()不可以作為變量名。A.1a2b B.a1b2 C.a_b D.a.b下列()可以作為變量名。A.TRUE B.Inf C.True D.NaN下列賦值語(yǔ)句錯(cuò)誤的是()。A.a<-1 B.a=1 C.1=a D.A_1<-”1”R語(yǔ)言是基于對(duì)象(Object)的語(yǔ)言基本的數(shù)據(jù)類型有:向量、矩陣、列表等復(fù)雜的數(shù)據(jù)對(duì)象有:數(shù)據(jù)框?qū)ο?,時(shí)間序列對(duì)象,模型對(duì)象,圖形對(duì)象,等等。這里先介紹下R中數(shù)據(jù)對(duì)象的基本屬性和有關(guān)操作。2.4R語(yǔ)言對(duì)象基本操作

對(duì)象和它的模式與屬性R是一種基于對(duì)象的語(yǔ)言,R的對(duì)象包括了若干元素作為其數(shù)據(jù),另外,還可以有一些特殊數(shù)據(jù)稱為屬性(attribute),并規(guī)定了一些特定的操作(如打印、繪圖);R對(duì)象分為:?jiǎn)渭儗?duì)象、復(fù)合對(duì)象單純對(duì)象:所有元素都是一種基本類型,復(fù)合對(duì)象的元素可以是不同類型的對(duì)象;固有屬性:mode和lengthR對(duì)象都有兩個(gè)基本的屬性:mode(類型)屬性和length(長(zhǎng)度)屬性,比如向量的類型為logical(邏輯型)、numeric(數(shù)值型)、complex(復(fù)數(shù)型)、character(字符型),比如:mode(c(1,3,5)>5)R對(duì)象有一種特別的null(空值型)型,只有一個(gè)特殊的NULL值為這種類型,表示沒(méi)有值(不同于NA,NA是一種特殊值,而NULL根本沒(méi)有對(duì)象值)attributes()和attr()函數(shù)attributes(object)返回對(duì)象object的各特殊屬性組成的列表,不包括固有屬性mode和length.例如:x<-c(apple=2.5,orange=2.1);xattributes(x)可以用attr(object,name)的形式存取對(duì)象object的名為name的屬性,例如,>attr(x,"names")[1]"apple""orange“也可以把a(bǔ)ttr()函數(shù)寫作賦值的左邊以改變屬性值或定義新的屬性,例如,對(duì)象的class屬性在R中可以用特殊的class屬性來(lái)支持面向?qū)ο蟮木幊田L(fēng)格,對(duì)象的class屬性用來(lái)區(qū)分對(duì)象的類,可以寫出通用函數(shù)根據(jù)對(duì)象類的不同進(jìn)行不同的操作,比如,print()函數(shù)對(duì)于向量和矩陣的顯示方法就不同,plot()函數(shù)對(duì)不同類的自變量作不同的圖形。為了暫時(shí)去掉一個(gè)有類的對(duì)象的class屬性,可以使用unclass(object)函數(shù)。對(duì)于簡(jiǎn)單向量來(lái)說(shuō),class函數(shù)返回的結(jié)果和mode()函數(shù)一致,但對(duì)于矩陣、數(shù)組、數(shù)據(jù)框等數(shù)據(jù)對(duì)象,結(jié)果有可能相同,也有可能不同。A<-"Gomphotherium";class(A);##[1]"character"class(c(1,3,5)>5)##[1]"logicald<-data.frame(V1=c(1,2))mode(d)##[1]"list"class(d)##[1]"data.frame"class()函數(shù)是從面向?qū)ο笳Z(yǔ)言的角度返回對(duì)象的抽象類,一個(gè)數(shù)據(jù)對(duì)象可能有多個(gè)類,用戶可以自行定義類。mode()函數(shù)返回的是內(nèi)存中數(shù)據(jù)對(duì)象的基本類型,一個(gè)數(shù)據(jù)對(duì)象只能有一個(gè)基本數(shù)據(jù)類型(numeric、complex、character、logical、list、function等),用戶無(wú)法自行定義。要判斷某對(duì)象是否某類型,有許多個(gè)類似于is.numeric()的函數(shù)可以完成.-is.numeric(x)用來(lái)檢驗(yàn)對(duì)象x是否為數(shù)值型,它返回一個(gè)邏輯型結(jié)果.-is.character()可以檢驗(yàn)對(duì)象是否為字符型,等等.如:z<-0:9is.numeric(z)is.character(z)R可以強(qiáng)制進(jìn)行類型轉(zhuǎn)換,例如digits<-as.character(123);digitsd<-as.numeric(digits);d

列出對(duì)象與刪除對(duì)象

函數(shù)ls()的功能是顯示所有在內(nèi)存中的對(duì)象。要在內(nèi)存中刪除某個(gè)對(duì)象,可利用函數(shù)rm()。rm(list=ls())#刪除內(nèi)存中的所有對(duì)象name<-"Carmen"n1<-10n2<-100m<-0.5ls()##[1]"m""n1""n2""name"2.5

R語(yǔ)言數(shù)據(jù)類型

向量是有相同基本類型的元素序列,即一維數(shù)組定義向量的最常用辦法是使用函數(shù)c(),它把若干個(gè)數(shù)值或字符串組合為一個(gè)向量,比如:>x=c(1:3,10:13)>x[1]12310111213R中用符號(hào)“<-”、“=”來(lái)為變量賦值。另一種賦值的辦法是用assign函數(shù),比如>x1=c(1,2)和

>assign(“x1”,c(1,2))相同向量(Vector)與賦值數(shù)值型向量運(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)。可以用向量作為函數(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)差如果求var(x)而x是矩陣,則結(jié)果為樣本協(xié)方差陣。(行向量為觀測(cè)值)任何數(shù)與缺失值的運(yùn)算結(jié)果仍為缺失值。例如,>2*c(1,NA,2)[1]2NA4>sum(c(1,NA,2))[1]NA產(chǎn)生有規(guī)律的數(shù)列在R中很容易產(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,>n=5;>1:n-1[1]01234>1:(n-1)[1]1234seq函數(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。R函數(shù)調(diào)用的一個(gè)很好的特點(diǎn)是它可以使用不同個(gè)數(shù)的自變量,函數(shù)可以對(duì)不同類型的自變量給出不同結(jié)果,自變量可以用“自變量名=自變量值”的形式指定。例如,seq(-2,3)可以寫成seq(from=-2,to=3)??梢杂靡粋€(gè)by參數(shù)指定等差數(shù)列的增加值,例如:>seq(0,2,0.7)[1]0.00.71.4

也可以寫成seq(from=0,to=2,by=0.7)。有參數(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另一個(gè)類似的函數(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的零向量

邏輯向量向量可以取邏輯值,如:

>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)算符包括<,<=,>,>=,==,!=。邏輯向量?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注意和(x>1.5)&&(x<3)的區(qū)別判斷一個(gè)邏輯向量是否都為真值的函數(shù)是all,如:>all(log(10*x)>x)[1]FALSE判斷是否其中有真值的函數(shù)是any,如:

>any(log(10*x)>x)[1]TRUE邏輯向量

函數(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"字符型向量向量元素可以取字符串值。例如:

>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'。兩個(gè)或者更多字符串對(duì)象根據(jù)元素對(duì)應(yīng)關(guān)系拼接一個(gè)字符串內(nèi)部元素如何連接復(fù)數(shù)向量R支持復(fù)數(shù)運(yùn)算。復(fù)數(shù)常量只要用3.5+2.1i這樣的格式即可。復(fù)向量的每一個(gè)元素都是復(fù)數(shù)??梢杂胏omplex()函數(shù)生成復(fù)向量(見(jiàn)幫助)。

>mydat=complex(real=3.5,imaginary=2.1)>mydat[1]3.5+2.1iRe()計(jì)算實(shí)部,Im()計(jì)算虛部,>Re(mydat)>[1]3.5

>Im(mydat)>[1]2.1

Mod()計(jì)算復(fù)數(shù)模,Arg()計(jì)算復(fù)數(shù)幅角。>Mod(mydat)[1]4.081666因子向量統(tǒng)計(jì)中的變量重要類別:區(qū)間變量和名義變量、有序變量。區(qū)間變量取連續(xù)的數(shù)值,可以進(jìn)行求和、平均等運(yùn)算。名義變量和有序變量取離散值,既可用數(shù)值表示也可取字符型值,其具體數(shù)值沒(méi)有數(shù)量意義,不能用于加減乘除計(jì)算而只能用來(lái)分類或者計(jì)數(shù)。名義變量比如性別、省份、職業(yè),有序變量比如班級(jí)名次、質(zhì)量等級(jí)等。因?yàn)殡x散變量有各種不同表示方法,在R中為統(tǒng)一起見(jiàn)使用因子(factor)來(lái)表示這種分類變量。還提供了有序因子(orderedfactor)來(lái)表示有序變量。因子是一種特殊的字符型向量,其中每一個(gè)元素取一組離散值中的一個(gè),而因子對(duì)象有一個(gè)特殊屬性levels表示這組離散值(用字符串表示)。例如:>x<-c("男","女","男","男","女")>y<-factor(x)>y[1]男女男男女

Levels:男女函數(shù)factor()用來(lái)把一個(gè)向量編碼成為一個(gè)因子。一般形式為:factor(x,levels=sort(unique(x),na.last=TRUE),labels,exclude=NA,ordered=FALSE)可以自行指定各離散取值水平(levels),不指定時(shí)由x的不同值來(lái)求得。labels可以用來(lái)指定各水平的標(biāo)簽,不指定時(shí)用各離散取值的對(duì)應(yīng)字符串。exclude參數(shù)用來(lái)指定要轉(zhuǎn)換為缺失值(NA)的元素值集合。如果指定了levels,則因子的第i個(gè)元素當(dāng)它等于水平中第j個(gè)時(shí)元素值取“j”,如果它的值沒(méi)有出現(xiàn)在levels中則對(duì)應(yīng)因子元素值取NA。ordered取真值時(shí)表示因子水平是有次序的(按編碼次序)??梢杂胕s.factor()檢驗(yàn)對(duì)象是否因子,用as.factor()把一個(gè)向量轉(zhuǎn)換成一個(gè)因子。>x=c(1,0,1,1,0)>y=factor(x,levels=sort(unique(x),decreasing=T),labels=c("男","女"),exclude=NA,order=F)>y[1]男女男男女

Levels:男女

>x=c(1,0,1,1,0,2)y=factor(x,levels=c(1,0),labels=c("男","女"),exclude=NA,order=F)>y[1]男女男男女<NA>Levels:男女因子的基本統(tǒng)計(jì)是頻數(shù)統(tǒng)計(jì),用函數(shù)table()來(lái)計(jì)數(shù)。例如,>sex=factor(c("男","女","男","男","女"))>res.tab<-table(sex)>res.tab

男女

32

表示男性3人,女性2人。table()的結(jié)果是一個(gè)帶元素名的向量,元素名為因子水平,元素值為該水平出現(xiàn)的頻數(shù)。R的結(jié)果除了可以顯示外,本身都是R對(duì)象(如這里的向量結(jié)果),可以很方便地進(jìn)一步處理??梢杂脙蓚€(gè)或多個(gè)因子進(jìn)行交叉分類。比如,性別(sex)和職業(yè)(job)交叉分組可以用table(sex,job)來(lái)統(tǒng)計(jì)每一交叉類的頻數(shù),結(jié)果為一個(gè)矩陣,矩陣帶有行名和列名,分別為兩個(gè)因子的各水平名。改變部分元素值的技術(shù)與邏輯值下標(biāo)方法結(jié)合可以定義向量的分段函數(shù)。例如:要定義y=f(x)為當(dāng)x<0時(shí)取1-x,否則取1+x,可以用:>x=c(-1,2,3,4,-3)>y=numeric(length(x))>y[x<0]=1-x[x<0]>y[x>=0]=1+x[x>=0]向量的分段函數(shù)要定義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;思考題

下列()不能生成向量([1]54321)。5:1 B.6-1:5C.seq(1,5,by=-1) D.6-sequence(5)下列()不能生成向量([1]1234512345)。A.rep(1:5,2) B.sequence(rep(5,2))C.1:10%%6D.(0:9%%5)+1數(shù)組(array)是帶多個(gè)下標(biāo)的類型相同的元素的集合,常用的是數(shù)值型的數(shù)組如矩陣,也可以有其它類型(如字符型、邏輯型、復(fù)型數(shù)組)。數(shù)組有一個(gè)特征屬性叫做維數(shù)向量(dim屬性),比如維數(shù)向量有兩個(gè)元素時(shí)數(shù)組為二維數(shù)組(矩陣)。維數(shù)向量的每一個(gè)元素指定了該下標(biāo)的上界,下標(biāo)的下界總為1。數(shù)組(array)一組值只有定義了維數(shù)向量(dim屬性)后才能被看作是數(shù)組。比如:

>a=1:24>dim(a)=c(2,3,4)>a

數(shù)組元素的排列次序缺省情況下是采用FORTRAN的數(shù)組元素次序(按列次序),即第一下標(biāo)變化最快,最后下標(biāo)變化最慢,這里a的各元素次序?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)用函數(shù)array()可以更直觀地定義數(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ù)相同的列表。a=array(c(1:24),dim=c(2,3,4),dimnames=NULL)數(shù)組下標(biāo)訪問(wèn)數(shù)組的某個(gè)元素,寫出數(shù)組名和方括號(hào)內(nèi)用逗號(hào)分開(kāi)的下標(biāo)即可,如a[2,1,2]。在每一個(gè)下標(biāo)位置寫一個(gè)下標(biāo)向量,表示對(duì)這一維取出所有指定下標(biāo)的元素,如a[1,2:3,2:3]取出所有第一下標(biāo)為1,第二下標(biāo)為2或3,第三下標(biāo)為2或3的元素。略寫某一維的下標(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ù)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)矩陣(matrix)>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的矩陣。矩陣是二維數(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%*%B另外,向量用在矩陣乘法中可以作為行向量看待也可以作為列向量看待,這要看哪一種觀點(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)榍罢咻^常用,所以R選擇表示前者,但內(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)積。只寫一個(gè)參數(shù)X的crossprod(X)計(jì)算X自身的內(nèi)積。其它矩陣運(yùn)算還有solve(A,b)解線性方程組,solve(A)求方陣A的逆矩陣,svd()計(jì)算奇異值分解,qr()計(jì)算QR分解,eigen()計(jì)算特征向量和特征值。詳見(jiàn)隨機(jī)幫助,例如:>?qr函數(shù)diag()的作用依賴于其自變量。diag(vector)返回以自變量(向量)為主對(duì)角元素的對(duì)角矩陣。diag(matrix)返回由矩陣的主對(duì)角元素組成的向量。diag(k)(k為標(biāo)量)返回k階單位陣。>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數(shù)據(jù)框(data.frame)數(shù)據(jù)框是R中類似SAS數(shù)據(jù)集的一種數(shù)據(jù)結(jié)構(gòu)。它通常是矩陣形式的數(shù)據(jù),但矩陣各列可以是不同類型的。數(shù)據(jù)框每列是一個(gè)變量,每行是一個(gè)樣品的觀測(cè)值。數(shù)據(jù)框有更一般的定義。它是一種特殊的列表對(duì)象,有一個(gè)值為“data.frame”的class屬性,各列表成員必須是向量(數(shù)值型、字符型、邏輯型)、因子、數(shù)值型矩陣、列表,或其它數(shù)據(jù)框。向量、因子成員為數(shù)據(jù)框提供一個(gè)變量,如果向量非數(shù)值型則會(huì)被強(qiáng)制轉(zhuǎn)換為因子,而矩陣、列表、數(shù)據(jù)框這樣的成員為新數(shù)據(jù)框提供了和其列數(shù)、成員數(shù)、變量數(shù)相同個(gè)數(shù)的變量。作為數(shù)據(jù)框變量的向量、因子或矩陣必須具有相同的長(zhǎng)度(行數(shù))。盡管如此,我們一般還是可以把數(shù)據(jù)框看作是一種推廣了的矩陣,它可以用矩陣形式顯示,可以用對(duì)矩陣的下標(biāo)引用方法來(lái)引用其元素或子集。數(shù)據(jù)框數(shù)據(jù)框可以用data.frame()函數(shù)生成,其用法與list()函數(shù)相同,各自變量變成數(shù)據(jù)框的成分,自變量可以命名,成為變量名。例如:>d=data.frame(name=c("趙","錢","孫","李","王"),age=c(20,21,22,21,20),height=c(170,171,175,165,181),gender=c("男","女","男","女","男"))>d

如果一個(gè)列表的各個(gè)成分滿足數(shù)據(jù)框成分的要求,它可以用as.data.frame()函數(shù)強(qiáng)制轉(zhuǎn)換為數(shù)據(jù)框。比如,上面的d如果先用list()函數(shù)定義成了一個(gè)列表,就可以強(qiáng)制成為一個(gè)數(shù)據(jù)框。一個(gè)矩陣可以用data.frame()轉(zhuǎn)換為一個(gè)數(shù)據(jù)框,如果它原來(lái)有列名則其列名被作為數(shù)據(jù)框的變量名,否則系統(tǒng)自動(dòng)為矩陣的各列起一個(gè)變量名(如X1,X2)。>dnameageheightgender1趙20170男

2錢21171女

3孫22175男

4李21165女

5王20181男>d[1]name1趙

2錢

3孫

4李

5王>d[[1]][1]"趙""錢""孫""李""王“>d[[2]][2:3][1]2122數(shù)據(jù)框引用引用數(shù)據(jù)框元素的方法與引用矩陣元素的方法相同,可以使用下標(biāo)或下標(biāo)向量,也可以使用名字或名字向量。如d[1:2,2:3]。數(shù)據(jù)框的各變量也可以按列表引用(即用雙括號(hào)[[]]或$符號(hào)引用)。數(shù)據(jù)框的變量名由屬性names定義,此屬性一定是非空的。數(shù)據(jù)框的各行也可以定義名字,可以用rownames屬性定義。如:>names(d)[1]"name""age""height""gender">rownames(d)[1]"1""2""3""4""5"R語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)矩陣:數(shù)據(jù)框:二維數(shù)據(jù)對(duì)象相同點(diǎn)不同點(diǎn)數(shù)據(jù)框二維行與列的意義不同:列表示變量;行表示觀測(cè)值。矩陣、二維數(shù)組行列意義相同思考題

下列說(shuō)法錯(cuò)誤的是()。A.?dāng)?shù)據(jù)框和矩陣都是二維的。B.?dāng)?shù)據(jù)框的行與列意義不同,而矩陣的行與列只代表數(shù)據(jù)的位置。C.顯示數(shù)據(jù)框時(shí)左側(cè)會(huì)顯示觀測(cè)值的序號(hào),顯示矩陣時(shí)只顯示矩陣中的數(shù)據(jù)。D.可以用data.frame函數(shù)建立數(shù)據(jù)框,用matrix()函數(shù)建立矩陣。列表(list)定義列表(List)是R中最復(fù)雜的數(shù)據(jù)類型,一般來(lái)說(shuō),列表是數(shù)據(jù)對(duì)象的有序集合,但是,列表的各個(gè)元素(item)的數(shù)據(jù)類型可以不同,每個(gè)元素的長(zhǎng)度可以不同,是R中最靈活的數(shù)據(jù)類型。列表項(xiàng)可以是列表類型,因此,列表被認(rèn)為是遞歸變量,與之相對(duì),向量,數(shù)組,矩陣,數(shù)據(jù)框被認(rèn)為是原子變量。列表元素用“列表名[[下標(biāo)]]”的格式引用。但是,列表不同于向量,我們每次只能引用一個(gè)元素,如rec[[1:2]]的用法是不允許的。注意:“列表名[下標(biāo)]”或“列表名[下標(biāo)范圍]”的用法也是合法的,但其意義與用兩重括號(hào)的記法完全不同,兩重記號(hào)取出列表的一個(gè)元素,結(jié)果與該元素類型相同,如果使用一重括號(hào),則結(jié)果是列表的一個(gè)子列表(結(jié)果類型仍為列表)。>rec=list(name="李明",age=30,scores=c(85,76,90))>rec$name[1]"李明"$age[1]30$scores[1]857690>rec[1]$name[1]"李明">rec[[1]][1]"李明">rec[2]$age[1]30>rec[[2]][1]30

>rec[3]$scores[1]857690>rec[[3]][1]857690>rec[[3]][1:2][1]8576>mode(rec[1])>mode(rec[[1]])在定義列表時(shí)如果指定了元素的名字(如rec中的name,age,scores),則引用列表元素還可以用它的名字作為下標(biāo),格式為“列表名[["元素名"]]”,如:

>rec[["age"]][1]30另一種格式是“列表名$元素名”,如:

>rec$age[1]30

其中“元素名”可以簡(jiǎn)寫到與其它元素名能夠區(qū)分的最短程度,比如“rec$s”可以代表“rec$score”。這種寫法方便了交互運(yùn)行,編寫程序時(shí)一般不用簡(jiǎn)寫,以免降低程序的可讀性。使用元素名的引用方法可以讓我們不必記住某一個(gè)下標(biāo)代表那一個(gè)元素,而直接用易記的元素名來(lái)引用元素。事實(shí)上,已知向量和矩陣都可以指定元素名、行名、列名。定義列表使用list()函數(shù),每一個(gè)自變量變成列表的一個(gè)元素,自變量可以用“名字=值”的方式給出,即給出列表元素名。自變量的值被復(fù)制到列表元素中,自變量如果是變量并不會(huì)與該列表元素建立關(guān)系(改變?cè)摿斜碓夭粫?huì)改變自變量的值)。(例見(jiàn)后)修改列表列表的元素可以修改,只要把元素引用賦值即可。如:>rec$age<-45

甚至>rec$age<-list(19,29,31)(可以任意修改一個(gè)列表元素)。如果被賦值的元素原來(lái)不存在,則列表延伸以包含該新元素。例如,rec現(xiàn)在共有三個(gè)元素,我們定義一個(gè)新的命名元素,則列表長(zhǎng)度變?yōu)?,再定義第六號(hào)元素則列表長(zhǎng)度變?yōu)?(第5個(gè)元素自動(dòng)為NULL):

>rec$sex<-"男">rec[[6]]<-161>rec>rec$sex<-"男">rec[[6]]<-161>rec$name[1]"李明"$age[1]30$scores[1]857690$sex[1]"男"[[5]]NULL[[6]][1]161>sex<-"男">rec1<-list(sex,161)>rec1>rec1[[1]]="女">rec1>sex第五號(hào)元素因?yàn)闆](méi)有定義所有其值是“NULL”,這是空對(duì)象的記號(hào)。如果rec是一個(gè)向量,則其空元素為“NA”,這是缺失值的記號(hào)。從這里我們也可以體會(huì)“NULL”與“NA”的區(qū)別。幾個(gè)列表可以用連接函數(shù)c()連接起來(lái),結(jié)果仍為一個(gè)列表,其元素為各自變量的列表元素。如:>list.ABC<-c(list.A,list.B,list.C)(注意在R中句點(diǎn)是名字的合法部分,一般沒(méi)有特殊意義。)R語(yǔ)言的數(shù)據(jù)結(jié)構(gòu)思考題:

1、在命令行鍵入q()的含義是

。

A、保存R程序

B、加載工作空間C、退出R軟件

D、新建工作空間2、table(x)命令的含義是()

。

A、顯示屬性向量x的取值及頻數(shù)

B、顯示屬性向量x的取值

C、顯示向量x的頻數(shù)

D、顯示向量x取值的頻率2.6R語(yǔ)言流程控制程序控制結(jié)構(gòu)是應(yīng)用if條件語(yǔ)句、循環(huán)語(yǔ)句等控制程序的走向。程序控制結(jié)構(gòu)又稱為流程控制。條件語(yǔ)句包括if,switch語(yǔ)句,可用復(fù)合表達(dá)式而且可用ifelse,switch語(yǔ)句根據(jù)條件表達(dá)式的值,選擇執(zhí)行的語(yǔ)句組。循環(huán)語(yǔ)句有for、while、repeat語(yǔ)句,并且可用組合break和next語(yǔ)句的方法。常見(jiàn)控制結(jié)構(gòu)的命令if

and

else:測(cè)試邏輯條件switch:分支的選擇for:

用于執(zhí)行固定次數(shù)的循環(huán)while:用于在某個(gè)條件成立時(shí)執(zhí)行循環(huán)repeat:執(zhí)行無(wú)限循環(huán)break:終止并跳出循環(huán)next:

跳過(guò)循環(huán)中的當(dāng)前迭代return:

從函數(shù)中退出分支選擇循環(huán)控制if-else語(yǔ)句如果條件成立,程序就做某件事否則(另一種條件下)。程序做另一件事if(<condition>){ ##dosomething}else{## dosomethingelse

}在}和else之間不能有新的行條件語(yǔ)句if-else語(yǔ)句else不是必須的,如果只需要在某條件成立時(shí)執(zhí)行某個(gè)任務(wù),那么只要使用if語(yǔ)句就可以了if(<condition>){##dosomething}##Continuewithrestofcode條件語(yǔ)句if-else語(yǔ)句如果條件不止一個(gè)/不止兩個(gè)的時(shí)候,可以添加一個(gè)/多個(gè)

elseif語(yǔ)句,但最后必須以else結(jié)尾:if(<condition1>){##dosomething

}elseif(<condition2>){##dosomethingdifferent

}else{##dosomethingdifferent

}在}和elseif或else之間不能有新的行條件語(yǔ)句ifelse函數(shù)ifelse(test,yes,no)test為真,輸出yes值,否則輸出no值。判斷條件為向量x<-c(1,1,1,0,0,1,1)ifelse(x!=1,1,0)#若x的值不等于1,輸出1,否則輸出0[1]0001100判斷條件為單個(gè)值x<-15ifelse(x>10,print("x真大。"),print("x真小。"))[1]

"x真大。"條件函數(shù)switch函數(shù)switch函數(shù)的第一個(gè)參數(shù)是表達(dá)式(exp),通常是一個(gè)字符串;當(dāng)表達(dá)式(exp)匹配后續(xù)的參數(shù)名(即變量名)時(shí),返回參數(shù)的值:>color<-function(t)switch(t,r='red',g='green',b='blue')>color('r')[1]"red“注意如果不匹配任何參數(shù)名,switch函數(shù)不返回任何值,可以添加一個(gè)匿名的參數(shù),當(dāng)表達(dá)式(exp)匹配不上任意一個(gè)命名參數(shù)時(shí),switch函數(shù)將返回匿名參數(shù)的值:>color<-function(t)switch(t,r='red',g='green',b='blue','error')>color('d')[1]"error"條件語(yǔ)句repeat循環(huán)語(yǔ)句

repeat循環(huán):先執(zhí)行代碼,遇到break關(guān)鍵字,結(jié)束循環(huán),也可以在break關(guān)鍵字前增減if(test)語(yǔ)句,當(dāng)指定的條件成立(為TRUE)時(shí),執(zhí)行break關(guān)鍵字,結(jié)束循環(huán):repeat{

code

if(test)

break

}

循環(huán)語(yǔ)句repeat循環(huán)例子我們想計(jì)算兩個(gè)值何時(shí)達(dá)到無(wú)限接近,需要通過(guò)算法不斷循環(huán),直到逼近設(shè)置的容差(允許范圍)x0<-1

tol<-1e-8

repeat{x1<-computeEstimate() if(abs(x1-x0)<tol){ ##Closeenough? break }else{x0<-x1 }}循環(huán)語(yǔ)句循環(huán)語(yǔ)句while循環(huán)語(yǔ)句

while循環(huán):先檢測(cè)條件,如果條件為TRUE,執(zhí)行code;如果條件為FALSE,結(jié)束循環(huán):while(test){code}循環(huán)語(yǔ)句while循環(huán)例子設(shè)定一個(gè)計(jì)數(shù)變量count,初始值為0,當(dāng)計(jì)數(shù)變量的值小于10(邏輯表達(dá)式)時(shí),運(yùn)行輸出變量count,并在之前的基礎(chǔ)上+1,一旦count的值達(dá)到10,循環(huán)停止count<-0

while(count<10){print(count)count<-count+1

}循環(huán)語(yǔ)句for循環(huán)語(yǔ)句for循環(huán)是R中最常見(jiàn)的循環(huán)運(yùn)算符,基本思路是先要設(shè)定一個(gè)循環(huán)下標(biāo),通常命名為i,循環(huán)下標(biāo)通常會(huì)代表一個(gè)整數(shù)數(shù)列中的每一個(gè)數(shù)字,或列表中的每一個(gè)對(duì)象等等。for(iinc(1:5)){code}循環(huán)語(yǔ)句for循環(huán)例子1最簡(jiǎn)單的例子如下,運(yùn)行后將依次輸出1-10這十個(gè)整數(shù):for(iin

1:10){ print(i)}[1]1[1]2[1]3[1]4[1]5[1]6[1]7[1]8[1]9[1]10循環(huán)語(yǔ)句for循環(huán)例子2依次打印向量x中的每一個(gè)元素,運(yùn)行后就會(huì)依次輸出"a",

"b",

"c",

"d"四個(gè)字符對(duì)象方法1:是將循環(huán)向量和向量x的長(zhǎng)度相對(duì)應(yīng):x<-c("a","b","c","d")for(iin

1:4){print(x[i])}方法2:使用seq_along()函數(shù),即輸入一個(gè)向量,之后它就會(huì)創(chuàng)造一個(gè)與該向量等長(zhǎng)的整數(shù)數(shù)列。for(iinseq_along(x)){print(x[i])}循環(huán)語(yǔ)句for循環(huán)例子2依次打印向量x中的每一個(gè)元素,運(yùn)行后就會(huì)依次輸出"a",

"b",

"c",

"d"四個(gè)字符對(duì)象方法3:使用下標(biāo)變量,這個(gè)變量的本意就是一個(gè)下標(biāo),會(huì)從向量本身取值,它可以從任意向量中提取元素,因此可以寫成:x<-c("a","b","c","d")for(lettersinx){print(letters)}如果for循環(huán)表達(dá)式只有一行,那么可以省略掉大括號(hào){},直接寫道for的后面:for(lettersinx)print(letters)循環(huán)語(yǔ)句for循環(huán)例子3嵌套for循環(huán)(Nestedforloop):把一個(gè)for循環(huán)放到另一個(gè)for循環(huán)的里面。嵌套for結(jié)構(gòu)打印出矩陣中所有元素。:x<-matrix(1:6,2,3)for(iinseq_len(nrow(x))){ for(jinseq_len(ncol(x))){ print(x[i,j]) }}循環(huán)語(yǔ)句break函數(shù)break用來(lái)完全退出循環(huán)。for(iin

1:100){ print(i) if(i>20){ ##Stoploopafter20iterations

break

} }循環(huán)語(yǔ)句next和return函數(shù)next可用在任何一種循環(huán)中,跳過(guò)某一段循環(huán)。例如,在1-100的迭代循環(huán)中,想要跳過(guò)前20個(gè),可以用這種方式:return主要用于退出函數(shù),它會(huì)結(jié)束整個(gè)函數(shù)并且返回一個(gè)數(shù)值。for(iin

1:100){

if(i<=20){ ##Skipthefirst20iterations

next

} ##Dosomethinghere }2.7自定義函數(shù)R可以靈活的編寫程序,用戶自己編寫的程序可以直接調(diào)用。R語(yǔ)言編程時(shí)無(wú)需聲明變量的類型,這與C,C++等語(yǔ)言不同。每一個(gè)R函數(shù)都包括三個(gè)部分:函數(shù)名,程序主體以及參數(shù)集合,在編寫自定義R函數(shù)時(shí),需要將三個(gè)部分各自儲(chǔ)存在一個(gè)R對(duì)象中。函數(shù)定義的基本格式如下,

Fun-name<-function(arg_1,arg_2,...){expression}expression是R中的表達(dá)式(通常是一組表達(dá)式),arg_1,arg_2,…表示函數(shù)的參數(shù),表達(dá)式中,放在程序最后的信息是函數(shù)的返回值,返回值可以是向量、數(shù)組(矩陣)、列表或數(shù)據(jù)框。調(diào)用函數(shù)的格式為Fun-name(expr_1,expr_2,…),并且在任何時(shí)調(diào)用都是合法的。在調(diào)用自己編寫的函數(shù)(程序)時(shí),需要將已寫好的函數(shù)調(diào)到內(nèi)存中,如執(zhí)行source()函數(shù)。例1:調(diào)用沒(méi)有參數(shù)的

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論