R语言学习之函数
R語言學(xué)習(xí)之函數(shù)
一、R函數(shù)
輸入數(shù)據(jù)類型:
向量:sum,mean,sd,range,median,sort,order
矩陣或數(shù)據(jù)框:cbind,rbind
數(shù)字矩陣:heatmap
R語言中常用lm()函數(shù)用于回歸分析
> state <- as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")]) > fit<- lm (Murder ~ Population+Illiteracy+Income+Frost,data=state) > summary(fit)Call: lm(formula = Murder ~ Population + Illiteracy + Income + Frost, data = state)Residuals:Min 1Q Median 3Q Max -4.7960 -1.6495 -0.0811 1.4815 7.6210 Coefficients:Estimate Std. Error t value Pr(>|t|) (Intercept) 1.235e+00 3.866e+00 0.319 0.7510 Population 2.237e-04 9.052e-05 2.471 0.0173 * Illiteracy 4.143e+00 8.744e-01 4.738 2.19e-05 *** Income 6.442e-05 6.837e-04 0.094 0.9253 Frost 5.813e-04 1.005e-02 0.058 0.9541 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 2.535 on 45 degrees of freedom Multiple R-squared: 0.567, Adjusted R-squared: 0.5285 F-statistic: 14.73 on 4 and 45DF, p-value: 9.133e-08二、選項(xiàng)參數(shù)
1、輸入控制部分
常用選項(xiàng):
????file:接一個(gè)文件
????data:一般指要輸入一個(gè)數(shù)據(jù)框
????x:表示一個(gè)單獨(dú)的對象,一般是向量,也可以是矩陣或者列表
????formula:公式
????na.rm:刪除缺失值
????……
2、輸出控制部分
3、調(diào)節(jié)參數(shù)
-
根據(jù)名字判斷選項(xiàng)的作用
?? color:選項(xiàng)用來控制顏色
??select:與選擇有關(guān)
??font:與字體有關(guān)
??font.axis:坐標(biāo)軸的字體
??lty:即line type
??lwd:即line width
??method:軟件算法
??……
-
選項(xiàng)接受那些參數(shù)
??main:字符串,不能是向量
??na.rm:TRUE或者FALSE
??axis:side參數(shù)只能是1到4
??fig:包含四個(gè)元素的向量
??……
三、數(shù)學(xué)統(tǒng)計(jì)函數(shù)
??d 概率密度函數(shù)
??p 分布函數(shù)
??q 分布函數(shù)的反函數(shù)
??r 產(chǎn)生相同分布的隨機(jī)數(shù)
正態(tài)分布函數(shù):(mean代表均值,sd代表方差)
dnorm(x, mean = 0, sd = 1, log = FALSE) pnorm(q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) qnorm(p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) rnorm(n, mean = 0, sd = 1)與離散分布相關(guān)的函數(shù)
與正態(tài)分布類似,在每種分布前加上d、p、q、r即可構(gòu)成函數(shù)名稱
dhyper(x, m, n, k, log = FALSE) phyper(q, m, n, k, lower.tail = TRUE, log.p = FALSE) qhyper(p, m, n, k, lower.tail = TRUE, log.p = FALSE) rhyper(nn, m, n, k)runif(n) 函數(shù)用來生成n個(gè)0~1之間的隨機(jī)數(shù)
runif(50,min=1,max=100) 生成50個(gè)1到100的隨機(jī)數(shù)
set.seed(n) 在runif()前運(yùn)行此函數(shù)可使n狀態(tài)與生成的隨機(jī)數(shù)綁定,會生成相同的隨機(jī)數(shù)
四、描述性統(tǒng)計(jì)函數(shù)
1、summary() 函數(shù)
> myvars <- mtcars[c("mpg", "hp", "wt", "am")] > summary(myvars)mpg hp wt am Min. :10.40 Min. : 52.0 Min. :1.513 Min. :0.0000 1st Qu.:15.43 1st Qu.: 96.5 1st Qu.:2.581 1st Qu.:0.0000 Median :19.20 Median :123.0 Median :3.325 Median :0.0000 Mean :20.09 Mean :146.7 Mean :3.217 Mean :0.4062 3rd Qu.:22.80 3rd Qu.:180.0 3rd Qu.:3.610 3rd Qu.:1.0000 Max. :33.90 Max. :335.0 Max. :5.424 Max. :1.00002、fivenum(),與summary()函數(shù)類似,返回最小值,四分位值,中位數(shù),上四分位數(shù)和最大值
> fivenum(myvars$hp) [1] 52 96 123 180 3353、Hmisc包中的describe函數(shù):
describe(mycars)4、pastecs包中stat.desc函數(shù):計(jì)算種類繁多的描述性統(tǒng)計(jì)量,其中x是一個(gè)數(shù)據(jù)框或時(shí)間序列
stat.desc(mycars)5、psych包中describe函數(shù):
describe(mycars) describe(mycars,trim=0.1) #trim=0.1去掉10%的最低值最高值部分6、aggregate()函數(shù)
很多情況下,我們需要對數(shù)據(jù)進(jìn)行分組描述,這時(shí)候可以使用aggregate函數(shù),aggregate函數(shù)能夠?qū)?shù)據(jù)按照指定的分組信息進(jìn)行統(tǒng)計(jì),將分組信息通過一個(gè)列表指定出來:
aggregate函數(shù)的缺點(diǎn)是一次只能計(jì)算一個(gè)統(tǒng)計(jì)函數(shù)。
7、使用doBy包中的summaryBy函數(shù):
summaryBy(mpg+hp+wt~am,data=mycars,FUN=mean)8、使用psych包中的describeBy函數(shù):
describeBy(mycars,list(am=mycars$am))五、頻數(shù)統(tǒng)計(jì)函數(shù)
1、一維頻數(shù)統(tǒng)計(jì)
- tabel()函數(shù)
分組后可以使用tabel()函數(shù)進(jìn)行頻數(shù)統(tǒng)計(jì),計(jì)算頻數(shù)表,也稱為列聯(lián)表,有一維列聯(lián)表和多維列聯(lián)表。
> split(mtcars,mtcars$cyl) > split(mtcars,as.factor (mtcars$cyl)) #根據(jù)cul進(jìn)行分類 > num <- 1:100 > cut(num,c(seq(0,100,10))) > cut(mtcars$mpg,c(seq(10,50,10))) #頻數(shù)統(tǒng)計(jì) > table(mtcars$cyl)4 6 8 11 7 14 > table(cut(mtcars$mpg,c(seq(10,50,10)))) (10,20] (20,30] (30,40] (40,50] 18 10 4 0- prop.table()函數(shù)直接計(jì)算頻數(shù)
2、二維數(shù)據(jù)框
library(vcd) table(Arthritis$Treatment,Arthritis$Improved) #統(tǒng)計(jì)兩個(gè)量的頻數(shù),返回的結(jié)果是一個(gè)二維的列聯(lián)表若變量太多,可提前使用with或xtabs加載數(shù)據(jù)
with(data = Arthritis,{table(Treatment,Improved)}) xtabs(~Treatment+Improved,data = Arthritis)3、邊際頻數(shù)統(tǒng)計(jì)
邊際頻數(shù)統(tǒng)計(jì)即按著行和列進(jìn)行統(tǒng)計(jì)
> library("grid") > library("vcd") > mytable <- table(Arthritis$Treatment,Arthritis$Improved) > with(data = Arthritis,{table(Treatment,Improved)})Improved Treatment None Some MarkedPlacebo 29 7 7Treated 13 7 21 > mytable <- xtabs(~ Treatment+Improved, data=Arthritis) > mytable # frequenciesImproved Treatment None Some MarkedPlacebo 29 7 7Treated 13 7 21 > margin.table(mytable,1) #1代表按行進(jìn)行邊際頻數(shù)統(tǒng)計(jì) Treatment Placebo Treated 43 41 > margin.table(mytable, 2) #2代表按列進(jìn)行邊際頻數(shù)統(tǒng)計(jì) ImprovedNone Some Marked 42 14 28將邊際頻數(shù)的和添加到頻數(shù)表中:
addmargins(x) addmargins(x,1) addmargins(x,2)三維列聯(lián)表
> mytable <- xtabs(~ Treatment+Sex+Improved, data=Arthritis) > mytable , , Improved = NoneSex Treatment Female MalePlacebo 19 10Treated 6 7, , Improved = SomeSex Treatment Female MalePlacebo 7 0Treated 5 2, , Improved = MarkedSex Treatment Female MalePlacebo 6 1Treated 16 5> ftable(mytable) Improved None Some Marked Treatment Sex Placebo Female 19 7 6Male 10 0 1 Treated Female 6 5 16Male 7 2 5六、獨(dú)立性檢驗(yàn)函數(shù)
1、獨(dú)立性檢驗(yàn)函數(shù)
? 獨(dú)立性檢驗(yàn)是根據(jù)頻數(shù)信息判斷兩類因子彼此相關(guān)或相互獨(dú)立的假設(shè)檢驗(yàn)。所謂獨(dú)立性就是指變量之間是獨(dú)立的,沒有關(guān)系。
? 獨(dú)立性檢驗(yàn)算法:卡方檢驗(yàn)、Fisher檢驗(yàn)、Cochran-Mantel-Haenszel檢驗(yàn)
2、假設(shè)檢驗(yàn)
? 假設(shè)檢驗(yàn)(Hypothesis Testing)是數(shù)理統(tǒng)計(jì)學(xué)中根據(jù)一定假設(shè)條件由樣本推斷總體的一種方法。
? 原假設(shè)——沒有發(fā)生
? 備擇假設(shè)——發(fā)生了
? 具體做法:根據(jù)問題的需要對所研究的總體作某種假設(shè),記作H0;選取合適的統(tǒng)計(jì)量,這個(gè)統(tǒng)計(jì)量的選取要使得在假設(shè)H0成立時(shí),其分布為已知;由實(shí)測的樣本,計(jì)算出統(tǒng)計(jì)量的值,并根據(jù)預(yù)先給定的顯著性水平進(jìn)行檢驗(yàn),做出拒接或接受假設(shè)H0的判斷。
3、p-value
p-value就是Probability的值,它是一個(gè)通過計(jì)算得到的概率值,也就是在原假設(shè)為真時(shí),得到最大的或者超出所得到的檢驗(yàn)統(tǒng)計(jì)量值的概率。
一般將p值定位到0.05,當(dāng)p<0.05時(shí)拒絕原假設(shè),p>0.05時(shí),不拒絕原假設(shè)。
4、卡方檢驗(yàn)
> library(vcd) > mytable <- table(Arthritis$Treatment,Arthritis$Improved) > chisq.test(mytable)Pearson's Chi-squared testdata: mytable X-squared = 13.055, df = 2, p-value = 0.001463? 上述p-value = 0.001463<0.05,說明Treatment和Improved這兩個(gè)變量不是獨(dú)立的。
5、Fisher檢驗(yàn)
Fisher精確檢驗(yàn)的原理是邊際固定的列聯(lián)表中行和列是相互獨(dú)立的。
> mytable <- xtabs(~Treatment+Improved, data=Arthritis) > fisher.test(mytable)Fisher's Exact Test for Count Datadata: mytable p-value = 0.001393 alternative hypothesis: two.sidedp值小于0.05,說明不獨(dú)立
6、Cochran-Mantel-Haenszel檢驗(yàn)
? 原理是兩個(gè)名義變量在第三個(gè)變量每一個(gè)水平中都是條件獨(dú)立的。根據(jù)定義這個(gè)檢驗(yàn)需要三個(gè)變量。
> mytable <- xtabs(~Treatment+Improved+Sex, data=Arthritis) > mantelhaen.test(mytable)Cochran-Mantel-Haenszel testdata: mytable Cochran-Mantel-Haenszel M^2 = 14.632, df = 2, p-value = 0.0006647? 結(jié)果得到的p-value值非常小,說明藥物治療和改善情況在性別的每一個(gè)水平上不獨(dú)立。如果調(diào)整變量的順序,結(jié)果是有差別的,這里函數(shù)中的變量順序很重要。
七、相關(guān)性分析函數(shù)
1、相關(guān)性分析
? 相關(guān)性分析是指對兩個(gè)或多個(gè)具備相關(guān)性的變量元素進(jìn)行分析,從而衡量兩個(gè)變量因素的相關(guān)密切程度。相關(guān)性的元素之間需要存在一定的聯(lián)系或者概率才可以進(jìn)行相關(guān)性分析。簡單來說就是變量之間是否有關(guān)系。
? 相關(guān)性可能是正相關(guān),也可能是負(fù)相關(guān),需要根據(jù)相關(guān)系數(shù)決定。相關(guān)系數(shù)的大小表示相關(guān)程度的強(qiáng)弱。
2、相關(guān)性衡量指標(biāo)
? 相關(guān)系數(shù)有多種計(jì)算方法,包括Pearson相關(guān)系數(shù)、Spearman相關(guān)系數(shù)、Kendall相關(guān)系數(shù)、偏相關(guān)系數(shù)、多分格(polychoric)相關(guān)系數(shù)和多系列(polyserial)相關(guān)系數(shù)。
? 和獨(dú)立性檢驗(yàn)不同,相關(guān)性當(dāng)中每種方法都沒有獨(dú)立的函數(shù),這里計(jì)算相關(guān)系數(shù)都使用同一個(gè)函數(shù)cor。cor函數(shù)可以計(jì)算三種相關(guān)系數(shù):pearson、kendall、spearman。具體使用哪種方法,可以通過函數(shù)中的method參數(shù)指定。函數(shù)中的use參數(shù)表示如何處理缺失值,是不處理還是刪除等等。
3、實(shí)例
本次實(shí)例利用state.x77數(shù)據(jù)集作為演示
-
state.x77
? state.x77數(shù)據(jù)集是美國50個(gè)州在1977年的人口收入、文盲率、預(yù)期壽命及謀殺率等指標(biāo)的統(tǒng)計(jì)。數(shù)據(jù)類型為矩陣。本次實(shí)例在于統(tǒng)計(jì)謀殺率和哪些指標(biāo)有關(guān)。
-
cor(state.x77)計(jì)算相關(guān)系數(shù)
一般相關(guān)系數(shù)都在0到1之間,0最小,1最大,正負(fù)號代表是正相關(guān)還是負(fù)相關(guān)
-
cov(state.x77)計(jì)算協(xié)方差,用來衡量兩個(gè)變量的總體誤差
-
如果只想計(jì)算一組變量與另一組變量之間的關(guān)系,而不需要將變量兩兩求相關(guān)系數(shù)
#x <- states[,c("Population", "Income", "Illiteracy", "HS Grad")] x <- state.x77[,c(1,2,3,6)] #y <- states[,c("Life Exp", "Murder")] y <- state.x77[,c(4,5)] > cor(x,y) > head(x)Population Income Illiteracy HS Grad Alabama 3615 3624 2.1 41.3 Alaska 365 6315 1.5 66.7 Arizona 2212 4530 1.8 58.1 Arkansas 2110 3378 1.9 39.9 California 21198 5114 1.1 62.6 Colorado 2541 4884 0.7 63.9 > head(y)Life Exp Murder Alabama 69.05 15.1 Alaska 69.31 11.3 Arizona 70.55 7.8 Arkansas 70.66 10.1 California 71.71 10.3 Colorado 72.06 6.8> cor(x,y)Life Exp Murder Population -0.06805195 0.3436428 Income 0.34025534 -0.2300776 Illiteracy -0.58847793 0.7029752 HS Grad 0.58221620 -0.4879710
? 描述相關(guān)性的其他指標(biāo),例如偏相關(guān)系數(shù)、多分格相關(guān)系數(shù)和多系列相關(guān)系數(shù)等等,可以通過R的擴(kuò)展包來實(shí)現(xiàn)。
? ggm包中的pcor可以用來計(jì)算偏相關(guān)系數(shù)。偏相關(guān)是指在控制一個(gè)或多個(gè)變量時(shí),剩余其他變量之間的相互關(guān)系。
install.packages("ggm") library(ggm) colnames(state.x77) pcor(c(1,5,2,3,6), cov(state.x77))? pcor(u,s) 函數(shù)中u是一個(gè)向量,向量中的前兩個(gè)值是要計(jì)算的相關(guān)系數(shù)的下標(biāo),其余數(shù)值為條件變量的下標(biāo);s是cov函數(shù)計(jì)算出來的協(xié)方差結(jié)果。
八、相關(guān)性檢驗(yàn)函數(shù)
cor.test(x,y,alternative,method)
- x,y表示向量
- alternative指定單側(cè)檢驗(yàn)還是雙側(cè)檢驗(yàn),two.sided同時(shí)檢驗(yàn)正負(fù)相關(guān),greater檢驗(yàn)正相關(guān),less檢驗(yàn)負(fù)相關(guān);
- method指定使用哪種相關(guān)性衡量指標(biāo)(pearson、kendall還是spearman)
計(jì)算state.x77中謀殺率與文盲率之間的相關(guān)性:
cor.test(state.x77[,3],state.x77[,5]) > cor.test(state.x77[,3],state.x77[,5])Pearson's product-moment correlationdata: state.x77[, 3] and state.x77[, 5] t = 6.8479, df = 48, p-value = 1.258e-08 alternative hypothesis: true correlation is not equal to 0 95 percent confidence interval:0.5279280 0.8207295 sample estimates:cor 0.7029752? p-value值遠(yuǎn)小于0.05,說明謀殺率與文盲率相關(guān),此外還給出了相關(guān)系數(shù)為0.7029752,置信區(qū)間為0.5279280~0.8207295。
? 置信區(qū)間:confidence interval,是指樣本統(tǒng)計(jì)量所構(gòu)造的總體參數(shù)的估計(jì)區(qū)間。在統(tǒng)計(jì)學(xué)中,一個(gè)概率樣本的置信區(qū)間是對這個(gè)樣本的某個(gè)總體參數(shù)的區(qū)間估計(jì)。置信區(qū)間展現(xiàn)的是這個(gè)參數(shù)的真實(shí)值有一定概率落在測量結(jié)果的周圍的程度。置信區(qū)間給出的是被測量參數(shù)的測量值的可信程度。
cor.test()每次只能檢測一組變量,使用起來較為麻煩,
-
psych包中的corr.test函數(shù):可以一次性檢驗(yàn)多個(gè)變量之間的相關(guān)性。
library(psych) corr.test(state.x77) -
ggm包中的pcor.test函數(shù):檢驗(yàn)偏相關(guān)性。
pcor.test(x,q,n)
- x是pcor計(jì)算的偏相關(guān)系數(shù);
- q是要控制的變量數(shù);
- n是樣本數(shù)。 -
分組數(shù)據(jù)的相關(guān)性檢驗(yàn)
? t檢驗(yàn):即student’s t-test,t檢驗(yàn)是用t分布理論推論差異發(fā)生的概率,從而比較兩個(gè)平均數(shù)的差異是否顯著。主要用于樣本含量較小,一般小于30個(gè),總體標(biāo)準(zhǔn)差未知的正態(tài)分布數(shù)據(jù)。
? 在這里使用MASS包的UScrime數(shù)據(jù)集,UScrime數(shù)據(jù)集包含1960年美國47個(gè)州的刑罰制度對犯罪率的信息
t.test(y~x,data=UScrime)
- y是一個(gè)數(shù)值型變量,x是一個(gè)二分型變量
? 結(jié)果中p-value = 0.0006506,小于0.05,可以拒絕南方各州與非南方各州擁有相同監(jiān)禁概率的假設(shè)。
? 如果想在多于兩個(gè)組之間進(jìn)行比較,若數(shù)據(jù)滿足正態(tài)分布,可以使用方差分析;若不滿足正態(tài)分布,則需要使用非參數(shù)檢驗(yàn)方法。
? 非參數(shù)檢驗(yàn)稱為nonparametric tests,在總體方差未知或知道甚少的情況下,利用樣本數(shù)據(jù)對總體分布形態(tài)等進(jìn)行推斷的方法。由于非參數(shù)檢驗(yàn)方法在推斷過程中不涉及有關(guān)總體分布的參數(shù),因而得名為“非參數(shù)”檢驗(yàn)。
? 參數(shù)檢驗(yàn)稱為parametric tests,是在總體分布形式已知的情況下,對總體分布的參數(shù)如均值、方差等進(jìn)行推斷的方法。也就是數(shù)據(jù)分布已知,比如滿足正態(tài)分布。
九、繪圖函數(shù)
1、R語言四大作圖系統(tǒng)
- 基礎(chǔ)繪圖系統(tǒng)(graphics包,默認(rèn)已加載)
- lattice包
- ggplot2包
- grid包
2、R基礎(chǔ)繪圖系統(tǒng)
1)高級繪圖
高級繪圖是一步到位,可以直接繪制出圖;
2)低級繪圖
低級繪圖不能單獨(dú)使用,必須在高級繪圖產(chǎn)生圖形的基礎(chǔ)上,對圖形進(jìn)行調(diào)整,比如加一條線,加上標(biāo)題文字等。
3、R繪圖輸入數(shù)據(jù)
對于繪圖函數(shù),最重要的就是要知道輸入數(shù)據(jù)的格式。
- 散點(diǎn)圖:x和y兩個(gè)坐標(biāo)數(shù)據(jù);
- 直方圖:因子;
- 熱力圖:數(shù)據(jù)矩陣;
……
4、plot函數(shù)
plot(women$height,women$weight) #輸入是向量,輸出是散點(diǎn)圖 plot(as.factor(mtcars$cyl)) #輸入是因子,輸出是直方圖 plot(as.factor(mtcars$cyl),mtcars$carb) #輸入是第一個(gè)參數(shù)是因子,第二個(gè)參數(shù)是向量,輸出是箱線圖 plot(mtcars$carb,as.factor(mtcars$cyl)) #輸入是第一個(gè)參數(shù)是向量,第二個(gè)參數(shù)是因子,輸出是散點(diǎn)圖 plot(women$height~women$weight) #輸出的是二者的關(guān)系散點(diǎn)圖利用plot函數(shù)直接繪制線性回歸的結(jié)果:
fit <- lm(height~weight,data=women) #lm函數(shù)是用于擬合線性模型 plot(fit) #結(jié)果生成四幅圖? plot函數(shù)之所以支持多種輸入數(shù)據(jù)格式,原因在于其支持多種屬性的數(shù)據(jù)格式。使用methods(plot)運(yùn)行后可以看出,plot其實(shí)是一個(gè)大家族,里面有很多子函數(shù),每個(gè)子函數(shù)名后綴對應(yīng)這種屬性的數(shù)據(jù)。print和summary也是這樣的道理。
5、par函數(shù)
par是用來對繪圖參數(shù)進(jìn)行設(shè)置的。如:
plot(as.factor(mtcars$cyl),col=c(“red”,“green”,“blue”)) #給圖形上色直接在R編輯器中輸入命令par()或者par(no.readonly=TRUE)都可以獲取當(dāng)前的各個(gè)繪圖參數(shù)。
十、自定義函數(shù)
在R中只寫函數(shù)名,不加括號,就會給出函數(shù)的源代碼,以cor()為例
有些函數(shù)代碼被封裝,敲函數(shù)名無法顯示源代碼,例如sum,mean
函數(shù)包含以下四部分:
1、函數(shù)名稱
-
函數(shù)命令與功能相關(guān)
-
名稱可以是子母和數(shù)字的組合,但必須是字母開頭
2、函數(shù)聲明
-
利用function函數(shù)來聲明
myfun <- function(選項(xiàng)參數(shù)){函數(shù)體 }
3、函數(shù)參數(shù)
4、函數(shù)體
以計(jì)算偏度與峰度函數(shù)為例
? 偏度(skewness),是統(tǒng)計(jì)數(shù)據(jù)分布偏斜方向和程度的度量,是統(tǒng)計(jì)數(shù)據(jù)分布非對稱程度的數(shù)字特征。
? 峰度(peakedness;kurtosis)又稱峰態(tài)系數(shù)。表征概率密度分布曲線在平均值處峰值高地的特征數(shù)。
mystats <- function(x,na.omit=FALSE) { #na.omit用于刪除缺失值。默認(rèn)維FALSEif(na.omit) x <- x[!is.na(x)]m <- mean(x)n <- length(x)s <- sd(x)skew <- sum((x-m^3/s^3))/nkurt <- sum((x-m^4/s^4))/n-3return(c(n=n,mean=m,stdev=s,skew=skew,kurtosis=kurt))}R語言中的循環(huán)與向量化操作
函數(shù)內(nèi)部通過循環(huán)實(shí)現(xiàn)向量化操作
- if 條件判斷
- for 循環(huán)
- while 循環(huán)
-
switch 語句
……
循環(huán)三部分
1)條件判斷,是真或是假
2)用于循環(huán)執(zhí)行的結(jié)構(gòu)
3)表達(dá)式
switch語句
switch(expr, list)
其中,expr為表達(dá)式,其值或?yàn)橐粋€(gè)整數(shù)值或?yàn)橐粋€(gè)字符串;list為一個(gè)列表。
若expr的計(jì)算結(jié)果為整數(shù),且值在1~length(list)之間時(shí),則switch()函數(shù)返回列表相應(yīng)位置的值。若expr的值超出范圍,則沒有返回值
#switch語句 x <- 2 switch(x, "C", "Python", "R")由上例可知,x的值為2,則switch函數(shù)根據(jù)傳入的值2,輸出列表中的第2個(gè)值:“Python”。
我們可以使用switch函數(shù)的這一性質(zhì)可以定義一個(gè)函數(shù)實(shí)現(xiàn)多種操作:
centre <- function(x, type) {switch(type,mean = mean(x),median = median(x),trimmed = mean(x, trim = .1)) }x <- rcauchy(10) centre(x, "mean") centre(x, "median") centre(x, "trimmed")i=1;while(i <= 10) {print (“Hello,World”);i=i+2;}
- switch 語句……**循環(huán)三部分**1)條件判斷,是真或是假2)用于循環(huán)執(zhí)行的結(jié)構(gòu)3)表達(dá)式**switch語句**switch(expr, list)其中,expr為表達(dá)式,其值或?yàn)橐粋€(gè)整數(shù)值或?yàn)橐粋€(gè)字符串;list為一個(gè)列表。若expr的計(jì)算結(jié)果為整數(shù),且值在1~length(list)之間時(shí),則switch()函數(shù)返回列表相應(yīng)位置的值。若expr的值超出范圍,則沒有返回值```R #switch語句 x <- 2 switch(x, "C", "Python", "R")由上例可知,x的值為2,則switch函數(shù)根據(jù)傳入的值2,輸出列表中的第2個(gè)值:“Python”。
我們可以使用switch函數(shù)的這一性質(zhì)可以定義一個(gè)函數(shù)實(shí)現(xiàn)多種操作:
centre <- function(x, type) {switch(type,mean = mean(x),median = median(x),trimmed = mean(x, trim = .1)) }x <- rcauchy(10) centre(x, "mean") centre(x, "median") centre(x, "trimmed")總結(jié)
- 上一篇: 泛微OA 任意文件上传漏洞
- 下一篇: windows server 2008r