語(yǔ)言初學(xué)者指南學(xué)習(xí)摘要_第1頁(yè)
語(yǔ)言初學(xué)者指南學(xué)習(xí)摘要_第2頁(yè)
語(yǔ)言初學(xué)者指南學(xué)習(xí)摘要_第3頁(yè)
語(yǔ)言初學(xué)者指南學(xué)習(xí)摘要_第4頁(yè)
語(yǔ)言初學(xué)者指南學(xué)習(xí)摘要_第5頁(yè)
已閱讀5頁(yè),還剩9頁(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)介

1、R語(yǔ)言初學(xué)者指南第1章 引言函數(shù)功能示例?訪問(wèn)幫助文件?boxplot#添加注釋#Add your comments hereboxplot生成盒形圖boxplot(y)boxplot(yfactor(x)log自然對(duì)數(shù)log(2)log10以10為底的對(duì)數(shù)log10(2)library載入包library(MASS)setwd設(shè)置工作目錄setwd(“C:/AnyDirectory”)q關(guān)閉Rq()citation提供對(duì)R的引用citation()第二章 R中的數(shù)據(jù)輸入錄入數(shù)據(jù),并把數(shù)據(jù)系統(tǒng)地轉(zhuǎn)化為標(biāo)量(單值)、向量、矩陣、數(shù)據(jù)框或列表。如何從Excel、ascii文件、數(shù)據(jù)庫(kù)和其他統(tǒng)計(jì)程序

2、中載入數(shù)據(jù)。2.1 R中的第1步2.1.1 小型數(shù)據(jù)庫(kù)中的數(shù)據(jù)錄入 #符號(hào)“<-”相當(dāng)于“=” #變量名中不能出現(xiàn)“%,&,*,!,?,+,-,(),,#,<>”因?yàn)檫@些符號(hào)中的大部分都是運(yùn)算符。#如果定義好了:> SQ.wing1<-sqrt(wing1)若要現(xiàn)實(shí)SQ.wing1的值,只需輸入:>SQ.wing1或者把需要執(zhí)行的命令放在圓括號(hào)內(nèi):> (SQ.wing1<-sqrt(wing1)2.1.2 應(yīng)用c函數(shù)連接數(shù)據(jù)C()函數(shù)可以完成一個(gè)變量中存儲(chǔ)多個(gè)值例如:>Wingcrd <- c(59, 55, 53.5, 55

3、, 52.5, 57.5, 53, 55)如果查看Wingcrd的第一個(gè)值,則需要> Wingcrd 1如果需要查看Wingcrd前五個(gè)值,則需要 > Wingcrd 1:5如果需要查看Wingcrd除了第二個(gè)值以外的其他值,則需要 > Wingcrd -2-負(fù)號(hào)表示刪除了這個(gè)值R有很多的內(nèi)置函數(shù),最基本的有sum, mean, max, min, median(中位數(shù)), var(方差)和sd(標(biāo)準(zhǔn)差)等。> sum(Wingcrd)或者存在一個(gè)新的變量中,>S.win <- sum(Wingcrd)>S.win輸入其他三組數(shù)據(jù):>Tarsus

4、 = c(22.3,19.7,20.8,20.3,20.8,21.5,20.6,21.5)>Head = c(31.2,30.4,30.6,30.3,30.3,30.8,32.5,NA)>Wt = c(9.5,13.8,14.8,15.2,15.5,15.6,15.7)R中的變量名最好使用大寫(xiě)字母開(kāi)頭,這樣可以避免將它和一些內(nèi)部函數(shù)名混淆。注意,數(shù)據(jù)里有一只鳥(niǎo)的頭的尺寸是沒(méi)有測(cè)量的,我們用NA表示,這時(shí)我們調(diào)用內(nèi)部函數(shù)計(jì)算就會(huì)出現(xiàn)錯(cuò)誤。在向量中有一個(gè)缺失值的話,默認(rèn)選項(xiàng)“na.rm=FALSE”(rm表示移除remove),將會(huì)導(dǎo)致R函數(shù)返回NA,為了避免此種情況,我們用“na.r

5、m=TRUE”,> sum(Head, na.rm=TRUE)我們將接著學(xué)習(xí)如何連接這4個(gè)變量中的數(shù)據(jù),(1)c,cbind和rbind函數(shù);(2)matrix和vector函數(shù);(3)數(shù)據(jù)框;(4)列表。2.1.3 使用c,cbind和rbind結(jié)合變量Wingcrd翼弦, Tarsus踝骨, Head頭, Wt體重,四組數(shù)據(jù),每組8個(gè)值c函數(shù)可以用來(lái)連接這些數(shù)據(jù),同時(shí)連接這些數(shù)據(jù)中的8個(gè)值:> BirdData <- c(Wingcrd, Tarsus, Head, Wt)Data是R中的一個(gè)內(nèi)部函數(shù),因而不能直接用Data.>Id <- c(1,1,1,1,

6、1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4)Id向量的作用是指出具有相似Id值的觀察值屬于同一種形態(tài)變量。上面的命令過(guò)于繁瑣,可以這么做:>Id <- rep(c(1,2,3,4), each=8)符號(hào)rep代表重復(fù)(repeat)還可以以下用法:> Id <- rep(1:4, each=8)或> a <- seq(from=1, to=4, by=1)> rep(a, each=8)接著生成一個(gè)VarNames的新變量:> Varnames = c("Wingcrd

7、", "Tarsus", "Head", "Wt")>Varnames>Id2= rep(Varnames, each=8)>Id2 c函數(shù)是我們結(jié)合數(shù)據(jù)或者變量的一種選擇,另一種選擇是cbind函數(shù),它的作用是將所結(jié)合的變量以列的形式輸出。如:> Z <- cbind(Wingcrd, Tarsus, Head, Wt)> Z當(dāng)我們有特殊需求時(shí):1、 訪問(wèn)Z的第一列: > Z ,1 或者 >Z1:8, 12、訪問(wèn)Z的第二行: >Z2, 或者 >Z2,1:4>

8、 dim(Z) #表示Z的行數(shù)和列數(shù)2.1.4 使用vector函數(shù)結(jié)合數(shù)據(jù)vector函數(shù)的作用與c函數(shù)類似,它可以用來(lái)代替c函數(shù)。2.2 數(shù)據(jù)的載入2.2.1 Excel中的數(shù)據(jù)載入兩種方法:第一種(常用):1、 將EXCEL中的數(shù)據(jù)準(zhǔn)備好;2、 將其提取到制表符分隔的ascii文件中;3、 關(guān)閉EXCEL;4、 使用read.table函數(shù)將數(shù)據(jù)載入到R中。第二種:是一個(gè)專門的R程序包,RODBC,它可以訪問(wèn)EXCEL中選定的行和列。2.2.1.1 EXCEL中的數(shù)據(jù)準(zhǔn)備樣本變量形式:列表示各種變量,如性別、年齡、成績(jī)等,行表示各種樣本、觀察值、案例、對(duì)象或其他稱之為樣本單元的東西。2.

9、2.1.2 數(shù)據(jù)提取到制表符分隔的ascii文件步驟:在EXCEL中,“文件”“另存為”“保存類型”選擇“文本文件(制表符分隔)”,將EXCEL中的數(shù)據(jù)提取到一個(gè)制表符分隔的ascii文件中,注意存儲(chǔ)位置。(注意,此操作前,必須讓EXCEL中的沒(méi)有特殊的數(shù)據(jù),也不可有空內(nèi)容或者包含空格的名稱,不然會(huì)出現(xiàn)NA)2.2.1.3 read.table函數(shù)的使用> Squid <- read.table(file = “C:/RBOOK/squid.txt(存儲(chǔ)目錄)”, header = TRUE)數(shù)據(jù)以數(shù)據(jù)框的形式存儲(chǔ)到Squid,名稱盡量簡(jiǎn)單、明確而read.table中的heade

10、r=TRUE,表示第一行包括了標(biāo)簽,如果文件中紅沒(méi)有標(biāo)簽,可以為header=FALSE.第三章 訪問(wèn)變量和處理數(shù)據(jù)子集3.1 訪問(wèn)數(shù)據(jù)框變量> setwd(“C:UserswinnerDesktop學(xué)習(xí)札記”) #設(shè)置默認(rèn)存儲(chǔ)目錄> Squid <- read.table(file = “C:UserswinnerDesktop學(xué)習(xí)札記RBOOK.txt”, header = TRUE)1、用names命令查看正在處理的變量> names(Squid)3.1.1 str函數(shù) str命令告訴我們數(shù)據(jù)框中每個(gè)變量的屬性> str (Squid )read.table

11、和names和str函數(shù)結(jié)合在一起使用 3.1.2 函數(shù)中的數(shù)據(jù)參數(shù) > M1 <- 1m ( GSI factor(Location) + factor(Year), data=Squid )直接用(data= )來(lái)告訴R,變量在數(shù)據(jù)框Squid中。但并不是所有的函數(shù)都可以如此做,因?yàn)橛械暮瘮?shù)美元data參數(shù)。3.1.3 $符號(hào)如果一個(gè)函數(shù)沒(méi)有data參數(shù),可以用$符號(hào):> Squid $ GSI還可以: > Squid , 6 #第6列也就是變量GSI那一列計(jì)算均值:兩種方法都可以 但建議用第一種> mean ( Squid$GSI)3.1.4 attach函

12、數(shù)用attach命令把Squid添加到R的搜索路徑里,就可以直接輸入變量而不加其他函數(shù),就能看到該變量的值了。> attach (Squid)> GSI> boxplot(GSI)> mean(GSI)attach雖然比較好,但是如果有兩個(gè)具有相同變量名稱的數(shù)據(jù)框,就會(huì)發(fā)生問(wèn)題。1、 為了避免復(fù)制變量,不要輸入attach(Squid)兩次;2、 如果你使用attach命令,確保你使用唯一的變量名稱,避免使用月份、位置等常見(jiàn)的名稱;3、 如果你載入多個(gè)數(shù)據(jù)集,并且一次只處理一個(gè)數(shù)據(jù)集,考慮使用detach命令從R的搜索路徑里移除一個(gè)數(shù)據(jù)框。如: > detach

13、(Squid)3.2 訪問(wèn)數(shù)據(jù)子集如果我只想處理某個(gè)位置的雌性數(shù)據(jù),為了提取數(shù)據(jù)子集,我們需要知道性別是如何編碼的,可以鍵入:> Squid$Sex結(jié)果顯示了變量Sex的所有值,可以用unique命令顯示這個(gè)變量里有多少個(gè)唯一值:> unique(Squid$Sex)出現(xiàn)1表示雌性,2表示雄性為了訪問(wèn)所有的雄性數(shù)據(jù),使用:> Se1 <- Squid$Sex=1 #生成一個(gè)向量Se1與Sex具有相同的長(zhǎng)度,且Sex的值為1時(shí)的值> SquidM <- Squid Se1, #選擇Squid中Se1等于TRUE,并把我們選擇的數(shù)據(jù)存儲(chǔ)到SquidM> S

14、quidM 上述命令也可以寫(xiě)為:>Squid <- Squid Squid$Sex =1 ,>Squid若Location上的值有1、2、3、4這四個(gè),我們想提取1、2、3的數(shù)據(jù),我們可以使用符號(hào)|表示或,!=表示不等于。> Squid123 <- SquidSquid$Location = 1 |Squid$Location = 2 | Squid$Location = 3 , > Squid123 <- SquidSquid$Location != 4, > Squid123 <- SquidSquid$Location <= 3

15、 , > Squid123 <- SquidSquid$Location >=1 & Squid$Location <= 3, | 表示“或”; &表示“且”; != 表示“不等于”;=為邏輯為/邏輯等于3.2.1 數(shù)據(jù)排序按月份由低到高排列:> Ord1 <- order(Squid$Month )> Squid Ord1, 3.3 使用相同的標(biāo)識(shí)符組合兩個(gè)數(shù)據(jù)集幾個(gè)不同的數(shù)據(jù)集,但是每個(gè)數(shù)據(jù)集里都有1個(gè)或幾個(gè)相同的變量,就可以將這幾個(gè)數(shù)據(jù)集組合起來(lái)。merge函數(shù)> setwd( “C:/RBOOK/”)>Sql <

16、;- read.table(file = “squid1.txt”, header = TURE)>Sql <- read.table(file = “squid2.txt”, header = TURE)>SquidMerged <- merge (Sq1, Sq2, by = “Sample”)>SquidMerged merge命令采用兩個(gè)數(shù)據(jù)框Sq1和Sq2作為參數(shù),并使用變量Sample作為相同的標(biāo)識(shí)符合并兩個(gè)數(shù)據(jù)集。3.4 輸出數(shù)據(jù)write.table函數(shù)可以把數(shù)字輸出到ascii文件。提取雄性數(shù)據(jù),并把它輸出到文件,MaleSquid.txt>

17、; SquidM <- Squid Squid$Sex = 1 , > write.table (SquidM, File = “MaleSquid.txt” , Sep = “ “, quote = FALSE, append = FALSE, na=”NA” )SquidM 為想輸出的變量,或者說(shuō)文件名Sep = “ “ 保證數(shù)據(jù)用空格隔開(kāi)quote = FALSE消除字符串的引號(hào)標(biāo)志na=”NA” 指定缺失值的代替append = FALSE 打開(kāi)一個(gè)新文件函數(shù)功能示例write.table把一個(gè)變量寫(xiě)入到ascii文件Write.table(Z, file=”test.tx

18、t”)order確定數(shù)據(jù)的順序Order(x)merge合并兩個(gè)數(shù)據(jù)框merge(x, y, by=”ID”)attach使數(shù)據(jù)框里的變量可以利用attach(MyData)str顯示一個(gè)對(duì)象的內(nèi)部結(jié)構(gòu)str(MyData)factor定義變量作為因子factor(x)第4章 簡(jiǎn)單的函數(shù)4.1 tapply函數(shù)載入數(shù)據(jù),并獲取變量的基本信息> setwd (“C:/RBOOK/” ) #設(shè)定默認(rèn)目錄> Veg <- read.table (file=”Vegetation2.txt”, header= TRUE ) #將名字為Vegetation2的ascii文件的數(shù)據(jù)轉(zhuǎn)為V

19、eg的數(shù)據(jù)框 > names (Veg) #查看Veg內(nèi)的數(shù)據(jù) 4.1.1 計(jì)算每個(gè)時(shí)間截面的均值(mean)笨方法以下代碼計(jì)算了每個(gè)截面的平均豐富度和總的平均豐富度> m <- mean (Veg$R )> m1 <- mean ( Veg$R Veg$Transect = 1 )> m2 <- mean ( Veg$R Veg$Transect = 2 )> m3 <- mean ( Veg$R Veg$Transect = 3 )> m4 <- mean ( Veg$R Veg$Transect = 4 )> m5

20、<- mean ( Veg$R Veg$Transect = 5 )> m6 <- mean ( Veg$R Veg$Transect = 6 )> m7 <- mean ( Veg$R Veg$Transect = 7 )> m8 <- mean ( Veg$R Veg$Transect = 8 )> c(m, m1, m2, m3, m4, m5, m6, m7, m8 )4.1.2 更高效地計(jì)算每個(gè)時(shí)間截面的均值tapplytapply只需一行命令即可完成上述命令達(dá)到的效果 > tapply (Veg$R, Veg$Transect,

21、 mean)還可以寫(xiě)為:> tapply (X=Veg$R, INDEX=Veg$Transect, FUN=mean)除了求均值,還可以對(duì)其求標(biāo)準(zhǔn)差(sd函數(shù))、方差(var函數(shù))、長(zhǎng)度(length函數(shù))等> Me <- tapply (Veg$R, Veg$Transect, mean)> Sd <- tapply (Veg$R, Veg$Transect, sd)> Le <- tapply (Veg$R, Veg$Transect, length)> cbind ( Me, Sd, Le)4.2 sapply函數(shù)和lapply函數(shù)sap

22、ply和lapply函數(shù)不用多次輸入同一個(gè)函數(shù)命令 格式如下:> sapply (Veg , 5:9 , FUN= mean)計(jì)算5-9這個(gè)五個(gè)變量的均值tapply計(jì)算的是一個(gè)變量觀察值子集的均值(或其他函數(shù)),而lapply和sapply函數(shù)計(jì)算的是一個(gè)或多個(gè)變量全部觀察值得均值(或其他函數(shù))。FUN后面接要計(jì)算的函數(shù)lapply和sapply的區(qū)別在于輸出的不同,> lapply (Veg , 5:9 , FUN= mean)輸出的結(jié)果的排列不同 lapply函數(shù)輸出的是一個(gè)列表,而sapply函數(shù)的輸出是一個(gè)向量,我們可以根據(jù)對(duì)輸出格式的要求來(lái)選擇適當(dāng)?shù)暮瘮?shù)。4.3 sum

23、mary函數(shù) summary命令的結(jié)果給出了變量的最小值、第一四分位數(shù)、中位數(shù)、平均值、第三四分位數(shù)和最大值。它的參數(shù)可以是一個(gè)變量、數(shù)據(jù)框或者cbind命令的輸出。> Z <- cbind (Veg$R, Veg$ROCK, Veg$LITTER )> colnnames(Z) <- c (“R”, “ROCK”, “LITTER” )> summary(Z)下面的命令,也可以實(shí)現(xiàn)同樣的功能:> summary (Weg ,c (“R”, “ROCK”, “LITTER”) )或者 > summary (Weg ,c (5, 6, 7) )4.4 t

24、able函數(shù)table函數(shù)的作用是用來(lái)了解每個(gè)農(nóng)場(chǎng)提供抽樣動(dòng)物的數(shù)量,每個(gè)性別和年份觀察值的數(shù)量。> table (Deer$Farm)> table (Deer$Sex, Deer$Year)函數(shù)功能示例tapply根據(jù)x的不同水平對(duì)y使用FUN的函數(shù)tapply(y, x, FUN=mean)sapply對(duì)y的每一個(gè)變量使用FUN的函數(shù)sapply(y, x, FUN=mean)lapply對(duì)y的每一個(gè)變量使用FUN的函數(shù)lapply(y, x, FUN=mean)sd計(jì)算y的標(biāo)準(zhǔn)差sd(y)length確定y的長(zhǎng)度length(y)summary計(jì)算基本信息summary(y

25、)table計(jì)算列聯(lián)信息table(x,y)第5章 基礎(chǔ)繪圖工具簡(jiǎn)介5.1 plot函數(shù)散點(diǎn)圖 繪制物種豐富度對(duì)底層變量“裸露土壤”記為BARESOIL的圖形> setwd (“C:/RBOOK/” )> Veg <- read.table (file = “Vegetation2.txt”, header=TRUE )> plot (Veg$BARESOIL, Veg$R, xlab=”BARESOIL”, ylab=”R” )plot命令的第一個(gè)參數(shù)顯示在水平軸上,第二個(gè)參數(shù)顯示在垂直軸上。首先是因變量(反應(yīng)變量),其后是自變量(解釋變量),習(xí)慣上垂直軸繪制反應(yīng)變量

26、,水平軸繪制解釋變量。添加標(biāo)題和x、y軸標(biāo)簽,以及設(shè)置x、y軸坐標(biāo)界限:> plot <- (x = Veg$BARESOIL, y = Veg$R, xlab = “Exposed soil ”, ylab = “Species richness”, main = “Scatter plot”, xlim = c(0, 45), ylim=c(4, 19 ) )5.2 符號(hào)、顏色和尺寸 5.2.1 改變繪圖字符 通過(guò)pch取不同的值,得到不同的繪圖字符 pch共有1-20個(gè)不同的取值 以16為例(實(shí)心圓)> plot <- (x = Veg$BARESOIL, y =

27、 Veg$R, xlab = “Exposed soil ”, ylab = “Species richness”, main = “Scatter plot”, xlim = c(0, 45), ylim = c(4, 19 ) , pch = 16 )5.2.2 改變繪圖符號(hào)的顏色 > plot <- (x = Veg$BARESOIL, y = Veg$R, xlab = “Exposed soil ”, ylab = “Species richness”, main = “Scatter plot”, xlim = c(0, 45), ylim = c(4, 19 ) ,

28、pch = 16, col = 2 )colors:2紅色 3綠色 5.2.3 改變繪圖符號(hào)的尺寸 繪圖符號(hào)的尺寸可以通過(guò)cex選項(xiàng)改變 cex的缺省值為1,改為1.5則為原來(lái)的1.5倍 > plot <- (x = Veg$BARESOIL, y = Veg$R, xlab = “Exposed soil ”, ylab = “Species richness”, main = “Scatter plot”, xlim = c(0, 45), ylim = c(4, 19 ), pch = 16, cex = 1.5 )5.3 添加一條平滑線 通過(guò)使用lines命令在圖形上添加合

29、適的平滑線 > plot <- (x = Veg$BARESOIL, y = Veg$R, xlab = “Exposed soil ”, ylab = “Species richness”, main = “Scatter plot”, xlim = c(0, 45), ylim = c(4, 19 )> M.loess <- loess(RBARESOIL, data = Veg)> Fit <- fitted (M.loess)> lines (Veg$BARESOIL, Fit )函數(shù)功能示例ploty對(duì)x的圖形plot(y,x,xlab =

30、”X label”, xlim = c(1),pch = 1, main = ”Main”, ylim = c(0,2), ylab = ”Y label”, col = 1 )lines在已存在的圖形上添加線lines(x,y,lwd=3, lty=1, col=1)order確定數(shù)據(jù)的順序order(x)loess使用LOESS平滑M<-loess(yx)fitted得到擬合值fitted(M)第6章 循環(huán)與函數(shù) 假設(shè)你有1000個(gè)數(shù)據(jù)集,對(duì)于每一個(gè)數(shù)據(jù)集你需要繪制一張圖,并把它存為JPEG格式。如果手動(dòng)完成這個(gè)任務(wù)將花費(fèi)很多時(shí)間,此時(shí),一個(gè)能夠不需要人們干涉就能自動(dòng)執(zhí)行任意次相同或

31、類似命令的裝置就是非常有價(jià)值的。循環(huán)恰好可以用來(lái)解決這種問(wèn)題,對(duì)1000個(gè)數(shù)據(jù)集可以進(jìn)行這樣的處理:i從1變到1000 提取第i個(gè)數(shù)據(jù)集 對(duì)于第i個(gè)數(shù)據(jù)集選取適當(dāng)?shù)膱D像標(biāo)簽 針對(duì)第i個(gè)數(shù)據(jù)集作圖 將i個(gè)數(shù)據(jù)集的圖像存儲(chǔ)起來(lái) 循環(huán)結(jié)束 6.2 循環(huán)任務(wù):寫(xiě)一個(gè)關(guān)于這些數(shù)據(jù)的報(bào)道,并且針對(duì)每一個(gè)鳥(niǎo)巢繪制一個(gè)同胞協(xié)商對(duì)到達(dá)時(shí)間的jpeg格式的散點(diǎn)圖,現(xiàn)在有27個(gè)鳥(niǎo)巢,所以你需要繪制并存儲(chǔ)27張圖。6.2.1 像建筑師那樣設(shè)計(jì)代碼大致步驟:1、載入數(shù)據(jù),熟悉變量名,使用read.table,names和str命令; 2、提取一個(gè)鳥(niǎo)巢的數(shù)據(jù),對(duì)于這個(gè)子集繪制出同胞協(xié)商對(duì)到達(dá)時(shí)間的散點(diǎn)圖; 3、添加圖像的

32、標(biāo)題以及x軸和y軸的坐標(biāo)軸名稱。此鳥(niǎo)巢的名字應(yīng)該包含在主標(biāo)題中。 4、提取第二個(gè)鳥(niǎo)巢的數(shù)據(jù),確定需要對(duì)原始圖像做哪些修改; 5、確定如何將圖像存儲(chǔ)為jpeg格式;6、寫(xiě)一個(gè)可以提取第i個(gè)鳥(niǎo)巢數(shù)據(jù)的循環(huán),使用第i個(gè)鳥(niǎo)巢的數(shù)據(jù)繪制圖像,并將其存儲(chǔ)為一個(gè)具有易識(shí)別的名字的jpeg格式圖片。6.2.2 第1步:載入數(shù)據(jù)載入所需數(shù)據(jù),給出變量名和它們的狀態(tài)> setwd(“C:/RBOOK/”)> Owls <- read.table (file= “Owls.txt”, header = TRUE)> names (Owls)> str (Owls)6.2.3 第2步和第

33、3步:繪制散點(diǎn)圖并添加標(biāo)簽 弄清楚這個(gè)鳥(niǎo)巢的名字:> unique (Owls$Nest) 給出了27個(gè)鳥(niǎo)巢的名字 提取一個(gè)鳥(niǎo)巢的數(shù)據(jù) > Owls.ATV <- Owls Owls$Nest=”AutavauxTV”, 這個(gè)鳥(niǎo)巢所提取的數(shù)據(jù)為Owls.ATV為了繪制散點(diǎn)圖,需要提取Owls.ATV中到達(dá)時(shí)間和協(xié)商行為的數(shù)據(jù) > Owls.ATV <- Owls Owls$Nest = “AutavauxTV”, > plot ( x = Owls.ATV$ArrivalTime, y = Owls.ATV$NegPerChick, xlab = “Arri

34、val Time”, main = “AutavauxTV” ylab = “Negotiation behaviour” )6.2.4 第4步:設(shè)計(jì)通用代碼 我們將相同的步驟應(yīng)用于另外一個(gè)鳥(niǎo)巢的數(shù)據(jù),針對(duì)第二個(gè)鳥(niǎo)巢,代碼只需要做很小的修改> Owls.Bot <- Owls Owls$Nest = “Bochet”, > plot ( x = Owls.Bot$ArrivalTime, y = Owls.Bot$NegPerChick, xlab = “Arrival Time”, ylab = “Negotiation behaviour”, main = “Bochet

35、” )以此類推,剩下還有25個(gè)鳥(niǎo)巢,這些命令還要修改25次,簡(jiǎn)化一下:用Owls.i替換Owls.ATV或者Owls.Bot> Owls.i <- Owls Owls$Nest = “Bochet”, > plot ( x =Owls.i$ArrivalTime, y = Owls.i$NegPerChick, xlab = “Arrival Time”, ylab = “Negotiation behaviour”, main = “Bochet” )但是里面仍然出現(xiàn)了“Bochet”這個(gè)具體鳥(niǎo)巢的名字,在處理其他數(shù)據(jù)集時(shí),需要將它們進(jìn)行替換,化簡(jiǎn),定義一個(gè)包含了鳥(niǎo)巢信息的

36、變量Nest.i> Nest.i <- “Bochet”> Owls.i <- Owls Owls$Nest = Nest.i , > plot ( x =Owls.i$ArrivalTime, y = Owls.i$NegPerChick, xlab = “Arrival Time”, main = Nest.i, ylab = “Negotiation behaviour” )如果繪制其他鳥(niǎo)巢的圖像,你只需要更改一下代碼第一行中鳥(niǎo)巢的名字就可以了,其他地方都會(huì)相應(yīng)地進(jìn)行更改6.2.5 第5步:保存圖像 將圖像存儲(chǔ)為jpeg文件 1、 選擇一個(gè)文件名。這個(gè)可以是

37、任何名字 2、 通過(guò)鍵入jpeg(file = “AngName.jpg”)打開(kāi)一個(gè)jpeg文件。3、 使用plot命令來(lái)繪制圖像。由于你鍵入了jpeg命令,R將把所有的圖像存儲(chǔ)為jpeg文件,并且圖像不出現(xiàn)在屏幕上。4、 通過(guò)鍵入dev.off()關(guān)閉jpeg文件。注意:從jpeg(file = “AngName.jpg”)到dev.off()中的所有輸出都存儲(chǔ)為jpg文件。工作目錄與存儲(chǔ)目錄 如何生成一個(gè)文件名隨著鳥(niǎo)巢名字(Nest.i)改變而自動(dòng)變化的文件。需要選擇一個(gè)包含有鳥(niǎo)巢名字并且擴(kuò)展名為jpg的文件名。我們用paste來(lái)連接:> paste (Nest.i, “.jpg”,

38、 sep = “”)1 “Bochet.jpg” #輸出結(jié)果paste命令的輸出就是一個(gè)可以被用來(lái)作為文件名的字符串,可以使用一個(gè)變量來(lái)存儲(chǔ)它并且將其應(yīng)用在jpeg中。我們下面使用變量YourFileName作為文件名,R就將介于jpeg和dev.off命令之間的繪圖結(jié)果存儲(chǔ)到這個(gè)文件中。> setwd(“C:/AllGraphs/”)> Nest.i <- “Bochet”> Owls.i <- Owls Owls$Nest = Nest.i , > YourFileName <- paste(Nest.i,“.jpg”, sep = “”)>

39、 jpeg (file = YourFileName)> plot ( x =Owls.i$ArrivalTime, y = Owls.i$NegPerChick, xlab = “Arrival Time”, main = Nest.i, ylab = “Negotiation behaviour” )> dev.off()jpeg函數(shù)的幫助文件中還包含了一些函數(shù),用以改善jpeg文件尺寸和質(zhì)量。6.2.6 第6步:構(gòu)造循環(huán) R中l(wèi)oop(循環(huán))命令的語(yǔ)法如下:for ( i in 1 : 27 ) do something do something do something 具

40、體應(yīng)用如下:> AllNests <- unique (Owls$Nest) #對(duì)鳥(niǎo)巢的名字使用unique函數(shù),確定其唯一性> for (i in 1 : 27 ) #當(dāng)i=1時(shí),鳥(niǎo)巢的名字為“AutavauxTV”,以此類推 Nest.i <- AllNests i Owls.i <- Owls Owls$Nest = Nest.i , YourFileName <- paste(Nest.i,“.jpg”, sep = “”) jpeg (file = YourFileName) plot ( x =Owls.i$ArrivalTime, y = Ow

41、ls.i$NegPerChick, xlab = “Arrival Time”, main = Nest.i, ylab = “Negotiation behaviour” ) dev.off() 6.3 函數(shù) 函數(shù)的基本概念可以描述為,它的輸入是一些變量,A、B、C,這些變量可以是向量、矩陣、數(shù)據(jù)框或者列表,函數(shù)執(zhí)行一些設(shè)計(jì)好的計(jì)算程序,將結(jié)果傳遞給用戶。6.3.1 零和空 在執(zhí)行統(tǒng)計(jì)分析前,查找并處理所有的缺失值是非常必要的。對(duì)每一個(gè)變量制作一個(gè)表格來(lái)給出它含有缺失值和零的個(gè)數(shù)。> setwd (“C:/RBOOK/” )> Veg <- read.table (file

42、 = “Vegetation2.txt”, header = TRUE)> names(Veg)NAPerVarible <- function (X1) D1 <- is.na(X1) colSums(D1) > NAPerVarible (Veg, 5:24 ) colSums輸出結(jié)果是每個(gè)變量的缺失值個(gè)數(shù);rowSums輸出每個(gè)觀察值缺失值的個(gè)數(shù)。6.3.2 技術(shù)信息 6.3.4 具有多個(gè)參數(shù)的函數(shù) 編寫(xiě)一個(gè)既能計(jì)算觀察值中零值數(shù)量的和,也能計(jì)算觀察值中空值數(shù)量的和的函數(shù) VariableInfo <- function (X1, Choice1) if (

43、Choice1 = “Zeros”) D1 = (X1 = 0) if (Choice1 = “NAs”) D1 <- is.na(X1) colsums (D1, na.rm = TRUE)這個(gè)函數(shù)有兩個(gè)參數(shù):X1和Choice1 X1包含了數(shù)據(jù)框,而Choice1是一個(gè)包含“零”或者“空”的變量> VariableInfo(Parasite, “Zeros” ) #查找0> VariableInfo(Parasite, “NAs” ) #查找缺失值 > Results <- VariableInfo(Parasite, “Zeros” ) #分配一個(gè)變量來(lái)存儲(chǔ)

44、這個(gè)函數(shù)的輸出結(jié)果6.3.5 穩(wěn)健的函數(shù) 做一些事情,使函數(shù)變得穩(wěn)健 6.3.5.1 函數(shù)參數(shù)中變量的默認(rèn)值 我們可以給變量Choice1賦一個(gè)默認(rèn)值,這樣的話,即使我們?cè)谑褂弥型浗oChoice1賦值,函數(shù)也會(huì)使用默認(rèn)值進(jìn)行計(jì)算。函數(shù)功能示例jpeg打開(kāi)一個(gè)jpg文件jpeg(file = “AnyName.jpg”)dev.off關(guān)閉jpg文件dev.off()function構(gòu)造一個(gè)函數(shù) z<-function(x,y)paste將變量連接為字符串paste(“a”,”b”,sep=”)if條件指令if (a) x<-1ifelse條件指令ifelse(a,x<-1,x<-2)if elseif條件指令if (a) x<-1 elseif (b) x<-2第七章 圖形工具 7.1

溫馨提示

  • 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)論