閑人博上關於R語言介紹的一片好文章

來源:互聯網
上載者:User
Posts filed under 'R語言'6_R的函數

#本來說上周就把這章寫上的,沒想到工作突然忙起來了……    呵呵,總算到昨天為止剛剛算是小小的告一段落,今天就抽時間寫它一章~~

今天就來聊一聊R的函數

R中有很多的標準內建的函數,也有很多的由擴充包支援的函數。今天我們主要看一看R中標準內建的函數。

首先簡單定義一下什麼是函數:

在R中,所謂函數實際上就是一系列程式的組合。

為了能夠更深刻的理解這句話,我將在下面這個例子中先一步一步的計算幾個數的平均值;再講如何把這些可以重複利用的運算步驟改寫成為自己服務的函數;最後,我們再看一下R中已經為我們準備好了的求平均值的函數的用法:

1,一段程式
我們用R計算下面這5個數的和
23  34  56  78  89
在R中,我們剛開始可能會這樣寫:
>x <- c( 23, 34, 56, 78, 89 )
>z <- 0
>for( i in 1:5 ){
>z <- z + x[i]
>}
>z <- z/5
>z
[1]56

經過我們一步一步的計算,得到了最後的結果56。

但如果每次遇到類似這樣的求平均的運算,我們都這樣的用手去一步一步的輸入的話,好像很麻煩,呵呵,還好,R可以協助我們這些懶人,用函數的方式來解決這個問題。

2,一段程式變函數
我們所想要的是,只要輸入資料就可以自動的幫我們算出平均值的結果。下面我們來看看怎樣在R中寫一個自己的函數。

> mymean <- function(x){
+ y <- 0
+ for(i in 1:length(x)){
+ y <- y+ x[i]
+ }
+ y <- y/length(x)
+ }

現在,屬於我們自己的求平均函數mymean()就完成了,我們可以用下面這段程式來檢查一下看有沒有什麼錯誤。

>x <- c( 23, 34, 56, 78, 89 )
>y <- mymean(x)
>y
[1]56

呵呵,結果一致。 我們以後就可以用這個自己製作的函數來計算其他的各種求平均運算了。

3,利用R內建的函數
其實像求平均、求和、最大值、最小值甚至自然指數、平方根等運算在R中都已經有內建的函數。比如R中內建的求平均函數:mean()

>x <- c( 23, 34, 56, 78, 89 )
>y <- mean(x)
>y
[1]56

使用方法和我們自己寫的函數的使用方法是一樣的。

好,我們到現在為止就大概的看了看函數的定義,如何製作自己的函數以及如何使用R中內建的函數。

接下來,我就把R中內建的函數列一個簡表,以方便大家查詢。(這裡並不是全部,只是個人認為比較常用的,希望對初學者有所協助。……也許以後會慢慢更新、補全,呵呵……)

基本統計量:

mean
求平均值
 
max
 求最大值
 
min
 求最小值
 
range
 求範圍(最大值-最小值)
 
median
 求中央值
 
var
 求分散
 

資料操作:

matrix
 建立行列式
 
list
 建立列表
 
is.*****

****是資料的類型名
例如:
 is.matrix(x)語句的意思是問R:“x是不是行列式?”。
 如果x是行列式的話R將返回”TRUE”,如果不是R將返回”FALSE”
 
as.****
****是資料的類型名
 as.matrix(x)的作用是不管x以前是什麼類型的,R都要用這條語句來把x轉換成行列式。

nrow
 返回對象的行數:nrow(x)
 
ncol
 返回對象的列數:ncol(x)
 
length
 返回對象的長度
 
colnames
 返回列名
 
rownames
 返回行名
 
 
簡單計算:

abs
 計算絕對值
 abs(-2)
 
exp
 求自然指數
 exp(1)=2.7182…
 
sqrt
 求平方根
 sort(4)
 
log
 求自然對數
 log(exp(1))=1
 
log10
 常用對數
 log10(10)=1
 
cos,sin,tan
 三角函數
 
acos,asin,atan
 逆三角函數
 
round
 四捨五入
 round(3.1415 , 3)= 3.142
 
 

 

Add comment June 22nd, 2006

5_用R進行基本的統計計算

※過了一個黃金周,呵呵,都不知道該怎麼上班了~~

今天簡單的講一下如何用R進行基本的統計計算。

定義:
資料有很多種分類方法,在這裡,為了方便理解,暫時把年齡、身高、體重等用數字表示的資料叫做數量型資料;相對的,把血型、性別、職稱等用文字敘述的資料叫做品質型資料。

在這裡所說的基本的統計計算,是指對各類數量型資料進行求和、平均、求最大值最小值等等的計算。

●和與百分比

A:和

在對數量型資料進行分析計算時,求和是經常會使用到的。

比如說,有五位同學,他們的身高分別是:
1.75米 、 1.82米 、 1.78米 、 1.93米 、 1.77米
求他們的身高的總和。

和 = 1.75+1.82+1.78+1.93+1.77 = 9.05米

用R進行求和計算時,你可以按照下面的方式進行計算
> 1.75+1.82+1.78+1.93+1.77
[1] 9.05
也可以利用R本身的sum()函數,這樣的話,會更加便捷。
> shengao <- c(1.75,1.82,1.78,1.93,1.77)
> sum(shengao)
[1] 9.05

B:百分比

還是剛才那5位同學,他們的體重分別是:
69公斤 , 80公斤 , 78公斤 , 96公斤 , 65公斤
他們的總體重為:
> tizhong <- c(69,80,78,96,65)
> sum(tizhong)
[1] 388
388公斤。

那麼,第一位同學佔總體重的多少呢?

按比例計算:
> tizhong/sum(tizhong)
[1] 0.1778351 0.2061856 0.2010309 0.2474227 0.1675258

按百分比計算:
> 100*(tizhong/sum(tizhong))
[1] 17.78351 20.61856 20.10309 24.74227 16.75258

使用擴充包sca中的percent函數,可以用帶%符號的表示方式顯示結果。
> library(sca)
> percent(tizhong/sum(tizhong))
[1] “18 %” “21 %” “20 %” “25 %” “17 %”

還可以用參數d來指定小數點後的表示位元。在不指定的情況下,小數點後的數字不表示。
> percent(tizhong/sum(tizhong),d=1)
[1] “17.8 %” “20.6 %” “20.1 %” “24.7 %” “16.8 %”

如果不想結果被雙引號包圍,可以用noquote命令
> noquote(percent(tizhong/sum(tizhong),d=1))
[1] 17.8 % 20.6 % 20.1 % 24.7 % 16.8 %

●表示中心的統計量
表示資料中心位置的統計量有很多種,最基本的有:平均值、最頻值。

A:平均值

上面那五位同學的年齡分別為:
19歲 、 21歲 、 20歲 、 26歲 、 17歲
在求這五位同學的年齡的平均值時,可以用下面這種方法:
> (19+21+20+26+17)/5
[1] 20.6

也可以用R內建的mean()函數:
> nianling <- c(19,21,20,26,17)
> mean(nianling)
[1] 20.6

B:最頻值

在資料中最頻繁出現的數值叫做最頻值。

我們先用其他的函數來間接的求最頻值。
例如:我們在求下面這組資料的最頻值時,可以使用table函數。
1 , 7 , 3 , 7 , 8 , 23 , 5 , 7 , 9 , 3 , 4
> table(c(1 , 7 , 3 , 7 , 8 , 23 , 5 , 7 , 9 , 3 , 4))
 1  3  4  5  7  8  9 23
 1  2  1  1  3  1  1  1
從返回的結果中我們可以清楚地看到,在資料中 “7” 出現了3次,因此 “7” 為該組資料的最頻值。

接著,我們直接用函數median()來求最頻值。
> median(c(1 , 7 , 3 , 7 , 8 , 23 , 5 , 7 , 9 , 3 , 4))
[1] 7

●表示分散的統計量
表示資料中心的統計量雖然很重要,但是表示資料四周的分散資訊的統計量也十分的重要。

A:最大值、最小值和範圍

我們用tizhong資料,分別計算五位同學體重的最大值、最小值和體重的分布範圍。

最大值
> max(tizhong)
[1] 96
最小值
> min(tizhong)
[1] 65
範圍
> range(tizhong)
[1] 65 96

B:方差和標準差(variance AND standard deviation)

在R中,有很方便的求方差和標準差的函數var()和sd()。

例如在求tizhong資料的方差和標準差時,可以如下計算。
方差:
> var(tizhong)
[1] 144.3
標準差:
> sd(tizhong)
[1] 12.01249

C:四分位元

四分位元是指把樣本資料按從小到大的順序等分成四份,各等分點上的數即為四分位元。
例如:資料
3(0%點)  5  6(25%點)  8  9(50%點)  11  12(75%點)  15  16(100%點)

25%點的6和75點的12分別稱為下四分位元和上四分位元。

上四分位元與下四分數之差叫做四分位間距。

在R中我們可以用quantile()函數和IQR()函數來求四分位元和四分位間距。
> sifenshu <- c(3,5,6,8,9,11,12,15,16)
> quantile(sifenshu)
  0%  25%  50%  75% 100%
   3    6    9   12   16
> IQR(sifenshu)
[1] 6

今天簡單介紹了一下如何用R對一些基本的統計量進行計算,如果有其它的要求的,歡迎提出來,我會進一步介紹的。今天就先到這裡了,呵呵。

7 comments May 8th, 2006

4_關於R的一些基本知識

首先看一下這一次要講的內容。

在用R進行資料分析和計算的時候,將會用到很多變數、函數、數組等等。而對象則是對所有這些變數、函數、數組等的總稱。比如說,下面這個式子:x <- 2通常我們會說,x是一個變數,我們通過賦值運算把它的值設為2。但是在R裡,不論我們是給一個變數賦值也好,還是對一個數組進行初始化也好,我們統統把它稱為[對象]。  

  1. 什麼是對象(Object)
  2. 如何改變工作目錄
  3. 關於擴充包(庫函數)
  4. R的資料類型
  5. 環境設定函數options()

接下來,我們一個一個的簡單介紹。

1,什麼是對象(Object)

在用R進行資料分析和計算的時候,將會用到很多變數、函數、數組等等。而對象則是對所有這些變數、函數、數組等的總稱。
比如說,下面這個式子:
x <- 2

 

下面的對象是R的預設對象。我們在命名自己的對象時,是不能與下面這些對象重名的。

break
else
for
function
if
TRUE
in
next
repeat
return
while
FALSE

另外
使用objects()函數,還可以查看目前存在的對象名。
使用rm()函數,可以消除自己所定義過的對象。( 例如: rm(killme) )
使用rm(list=ls(all=TRUE))命令,可以消除自己所定義過的所有的對象。
命名物件時,要注意大小寫。(例如:x和X是兩個不同的對象)

2、如何改變工作目錄

你可以用getwd()命令來查看目前的目錄,也可以用類似setwd(”c:/usr”)的命令來更改當前的目錄。

你還可以用dir()命令來查看目前的目錄裡的檔案。(好像回到了dos時代…呵呵)

3、關於擴充包(庫函數)

R有很好的擴充性能,預設下R內建了以下的擴充包。

base:R的基本擴充包
boot:R的啟動函數庫
class:Classification的函數庫
cluster:進行群集計算的函數庫
foreign:讀取其它的統計軟體(如:SAS…)等產生的檔案的函數庫
grid:grid映像函數庫
KernSmooth:進行核函數密度估計運算的函數庫
lattice:lattice映像函數庫
MASS:在『Modern Applied Statistics with S』中出現的資料與函數庫
methods:定義了在R中用於對象的各種方法、類、程式以及工具。
mgcv:GCV和一般加法模型GAM(generalized additive model)的函數庫
nlme:線性混合效果模型和非線性混合效果模型的函數庫
nnet:
rpart:使用了再歸演算法的分類和迴歸樹的函數庫
spatial:
splines:splines迴歸的函數庫
stats:R的統計函數庫
stats4:S4類的統計函數庫
survival:
tcltk:Tcl/Tk的介面函數庫
tools:用於擴充包開發和管理的函數庫
utils:

另外
使用library(help=”擴充包名”)命令可以查看該擴充包的詳細資料
使用library(擴充包名)命令可以使用該擴充包
使用search()命令可以查看現在已經讀取的擴充包
使用detach(”package:擴充包名”)命令可以卸載某個擴充包
使用data()命令可以查看當前可使用的資料對象
使用data(package = “擴充包名”)命令可以查看在該擴充包中的資料對象

擴充包的安裝
使用下面的命令,可以連網安裝擴充包。
options(CRAN=”http://cran.r-project.org”)
install.packages(”擴充包名”)

如果你已經下載了擴充包的ZIP壓縮檔,你可以用下面的命令指定路徑安裝擴充包。
install.packages(”路徑名/檔案名稱.zip”, contriburl = NULL)
例如:install.packages(”c:/adapt_1.0-4.zip”, contriburl = NULL)

當然,你也可以通過菜單操作下載和安裝擴充包,請自己研究。

3、R的資料類型

R中包含以下的基礎資料型別 (Elementary Data Type)。

空值(NULL)
意義  :該對象裡什麼都沒有(甚至連0也沒有)

欠損值、不定值(NA),非數(NaN),無限大(Inf)
意義  :NA:表示資料缺損;NaN:表示用數字無法表示;Inf:無限大

複數(complex)
意義  :複數

字串(character)
意義  :不是單一的字元,而是用雙/單引號括起來的字元

邏輯值(logical)
意義  :T表示真,F表示假

4,環境設定函數options()

用options()命令可以設定一些環境變數。

比如說:

options(digits=10)
這個命令,可以把R的整數表示能力設為10位。

options(warn=-1)
這個命令,可以忽視任何警告。(warn=1時,為不放過任何警告)
……

使用help(options)可以查看詳細的參數資訊。

呵呵,今天就先到這裡~~

 

2006/6/19更新: 添加擴充包的說明

RWEKA:

WEKA是一個JAVA寫的資料採礦的工具,RWEKA則是在R中調用WEKA的一個介面。

擴充包說明&(英文):http://cran.r-project.org/src/contrib/Descriptions/RWeka.html

 

 

 

9 comments April 20th, 2006

3_簡單的數學計算、數學函數以及如何編輯R程式

1,用R進行簡單的計算:

我們可以用R進行以下各類運算。

  • 加法      +
  • 減法      -
  • 乘法      *
  • 除法      /
  • 冪運算   ^
  • 整數商   %/%
  • 餘數      %%

例如:
輸入:   (1 + 2 - 3 * 4) / 5^6
結果:   [1] -0.000576

2,R中還有很多的數學函數可以使用,比如說開方函數、對數函數等等。

例如:
輸入:   sqrt(2)
結果:[1] 1.414213

你還可以使用多個函數進行計算。例如:
輸入:   sqrt(100) + round(100) / log10(100)
結果:[1] 60 下面介紹的是R中可以使用的數學函數。

  • sqrt : 開平方函數
  • abs  : 絕對值函數
  • exp  : 2.71828…
  • expm1  : 當x的絕對值比1小很多的時候,它將能更加正確的計算exp(x)-1
  • log  : 對數函數
  • log10  : 對數(底為10)函數
  • log2  : 對數(底為2)函數
  • sin  : 正弦函數
  • cos  : 餘弦函數
  • tan  :  正切函數
  • asin  :  反正弦函數
  • acos  :  反餘弦函數
  • atan  :  反正切函數
  • sinh  :  超越正弦函數
  • cosh  :  超越餘弦函數
  • tanh  :  超越正切函數
  • asinh  :  反超越正弦函數
  • acosh  :  反超越餘弦函數
  • atanh  :  反超越正切函數
  • logb  :  和log函數一樣
  • log1px  :  當x的絕對值比1小很多的時候,它將能更加正確的計算log(1+x)
  • gamma  :  Γ函數(伽瑪函數)
  • lgamma  :  等同於log(gamma(x))
  • ceiling  :  返回大於或等於所給數字運算式的最小整數
  • floor  :  返回小於或等於所 給數字運算式的最大整數
  • trunc  :  截取整數部分
  • round  :  四捨五入
  • signif(x,a)  :  資料截取函數 x:有效位 a:到a位為止

3,R程式的輸入/編輯

你可以直接在R的環境裡輸入R命令執行計算,也可以用任何一款文字編輯器進行編程。R程式的預設檔案名稱尾碼是[ .R ]。

 

 

Add comment April 11th, 2006

2_R的下載、安轉及相關連結

R有很多的版本,支援目前主流的作業系統MAC、Linux和WINDOWS系列。因為我個人是在WINDOWS下用R的,所以在這裡將只介紹WINDOWS下R的下載&安裝。

下載R:

你可以從世界各地很多網站上下載到R,官方的中國下載點是:
http://www.lmbe.seu.edu.cn/CRAN/bin/windows/base/

在我寫這篇文章的時候,最新的版本是R-2.2.1版。
在網路上有一篇被翻譯過來的R入門教材,可以在這裡找到 :R 導論(入門)

安裝R:

1,雙擊R-2.2.1-win32.exe檔案,進入安裝畫面。
2,在Welcome to the R for Windows Setup Wizard的畫面中,單擊NEXT。
3,在License Agreement的畫面中,選擇[I accept the agreement],然後單擊NEXT。
4,在Select Destination Location的畫面中,可以自行設定安裝目錄,預設為:[C:/Program Files/R/R-2.2.1],單擊NEXT。
5,在接下來的過程中一律選則NEXT安裝即可。

關於R的一些網站:

中文:.
中國統計論壇 - R語言與SPLUS: http://www.8sta.com/bbs/Archive_index.asp?BoardID=38&BoardType=R語言與SPLUS

英文:
R Project(R的官方網站):http://www.r-project.org/

日文:
日本的R大本營:http://www.okada.jp.org/RWiki/
R-TIPS(日文教程):http://cse.naro.affrc.go.jp/takezawa/r-tips/r2.html
用R進行統計處理:http://aoki2.si.gunma-u.ac.jp/R/

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.