R語言編程_R語言

來源:互聯網
上載者:User
1.R語言編程特徵 1.1 R語言資料結構

R語言資料結構其實以資料類型的方式出現,有資料框,數組、向量和矩陣,因子和列表。資料框dataframe是統計專業常用資料集,而因子factor是分類所用的方法,表明了R語言鮮明的經濟統計色彩。向量vector類似一維數組,但是沒有行名和列名,只有標籤names。數組array包括一維數組,二維數組和三維數組和多維陣列,三維數組有行、列和層,有行名rownames和列名colnames。矩陣matrix是二維數組,但是具有矩陣計算的性質。列表list不僅具有c語言結構struct的特徵,而且性質是向量,因此是資料結構中的廣義表。

R語言的資料結構中,沒有樹和圖。樹可用靜態數組實現,應用索引方法。而圖在軟體包igraph中提供的函數實現,R語言的圖稱為網路資料格式,所以能分析生物結構和電腦網路。 1.2 R語言是進階語言

R語言有程式的控制結構和函數function。儘管R語言是解釋型語言,但是可以用編譯的方式實現,調用方法是source(file.R)命令。R語言的軟體包能在編程環境中,通過子功能表下載後安裝,因此是無障礙的。現在軟體包有7000多,在統計、數學計算、金融資料分析、生物學、互連網資料分析,大資料、並行計算,混合編程、資料採礦、資料分析方面有實際應用。

程式中載入軟體包的命令,

>library(parallel)   #並行計算軟體包,單線程多核

尋找軟體包中所有函數,

>library(help=parallel)

>help(packet=parallel)

R語言和解釋型語言一樣,沒有變數聲明。R語言能編寫c++程式,應用Rcpp軟體包。R語言沒有獨立的標量,僅僅迴圈語句使用標量作為迴圈變數。詳細介紹見行業百科的R語言百科[4] 。 1.3 R語言編程風格

統計方式的R語言,稱為資料操作,僅僅是用命令處理資料,將資料分組,參數估計與結果檢驗。金融資料分析,則是建立模型,檢驗模型資料擬合效果,因此資料操作好像沒有明顯的編程意義,實質上沒有明顯的程式風格。

但是,金融資料分析建立模型有標準流程,比如GARCH模型常有最少4個階段或步驟,資料性質、ARCH效應、建立GARCH模型和模型擬合優度的檢測與模型係數和參數調整。因此統計分析仍然有程式標準流程,因此能表現程式員的編程能力和特有風格。

電腦專業的R語言,稱為編程的藝術。因子的應用方法、混合編程、並行程式設計、編寫軟體包,都是需要高超的編程技術和鮮明的編程風格,因此不同軟體包的函數的程式已耗用時間不同。

R語言程式執行時間的函數是system.time(function),參數是系統執行的函數function。 2. R語言程式設計 2.1 R語言編程方法

R語言處理三種問題,1.資料操作。包括統計分析,例如有害健康調查時有多少吸煙的人,分組資料等; 2.金融資料分析,需要建立經濟統計模型,例如建立ARIMA模型; 3.問題處理,譬如資料採礦、進階語言程式設計、並行計算等。三個問題的編程方法不同。資料操作關鍵是根據每一個命令的結果選擇下一個命令,需要豐富的實際經驗和精明強乾的問題控制能力。輸出命令結果的方法有plot圖,箱式圖等,更高水平是應用高品質報表。高品質報表直觀看和商場pos機的憑條類似,可根據精確的資料進行選擇。建立經濟統計模型的效果根據編程人員的專業能力決定。有時,模型資料擬合效果比較合理,然而不能進行詳細的專業解釋和問題分析,因此不能進一步提高模型的優度,使電腦輔助資料分析的功能受到減弱。建立模型的標準流程在教材和參考書中有分析,但是細節的掌握,表明了工作人員仔細的程度不同,程式的有效性、精確測度就不同。第三個問題是電腦專業人員應用R語言的問題,不僅要求電腦軟體的編程能力和理論應用能力,而且對R語言的掌握有標準[1][2][3][5] 。  2.2 電腦專業掌握R語言的標準

 (1)能用R語言程式處理資料框的所有問題,實現分組資料和統計 ,實現資料結構編程,例如樹、圖等。

 (2)能用R語言實現並行計算,windows系統的軟體包parallel,Rmpi,snow等,多核和多電腦叢集系統。

 (3)能用R語言實現混合編程,能實現多核多線程。譬如:C/C++,java,python,fortran。

 (4)能用R語言處理大量資料。能編寫高效能程式處理幾萬條資料,實現大型資料庫oracle和windows的SQL處理資料.

 (5)能用R語言實現圖形介面。R語言是流程式語言,但是很難實現程式的圖形介面。shiny軟體包可實現HTML應用。

 (6)能用R語言產生高品質報表。直觀地看R語言報表類似pos機的憑條。

 (7)能用R語言程式實現資料採礦技術,比如k-means,關聯規則等。能用R語言實現hadoop,實現對大資料的處理。

 (8)能用R語言實現資料分析,譬如:金融資料分析、生物、會計財務、商業與銷售、電信與通訊、交通、醫學、新藥研發以及運輸物流。 2.3 R語言並行計算

並行計算有實際應用的有多核多線程,例如python、java、c++,MPI和openMP,R語言軟體包是parallel,Rmpi,snow等,以及GPU計算的CUDA,R語言使用gputools軟體包。R語言並行計算能實現單線程多核與叢集方式,但是問題是不能實現多核多線程,因此要在調用python、java和c++編程環境調用R語言程式。混合編程的程式執行時間是關注的問題,C++處理常式執行時間的函數見下。

1.Linux系統

在程式program1執行前,在命令列用參數time ./progarm1。程式實現方法則是:

#include<sys/time.h> #時間處理標頭檔

#include<stdio.h>

#include<math.h>#數學標頭檔

void functionsample(){  #需要執行的函數

   unsigned int i,j;

   double y;

   for(i=0;i<1000;i++)

      for(j=0;j<1000;j++)

          y=sin((double)i);    #計算正弦函數1000000次

}

main(){

struct timeval tpstart,tpend;

float timeuse;

gettimeofday(&tpstart,NULL);  #tpstart 開始時間

functionsample();   #執行函數functionsample

gettimeofday(&tpend,NULL);   #tpend  結束時間

timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+ tpend.tv_usec-tpstart.tv_usec;

timeuse/=1000000;

printf("Used Time:%f\n",timeuse);  #float型變數

exit(0);

}

輸出結果: Used Time:0.556070 (參考互連網文章)

2.windows系統

#include<time.h>

應用函數clock(),類型clock_t,返回程式執行開始到調用此函數間的時間段的毫秒數。clock_t是一個長整型,常量CLOCKS_PER_SEC 表示一秒鐘有多少個時鐘計時單元,常量定義見下。

#define CLOCKS_PER_SEC  ((clock_t)1000)

example1.計算迴圈語句的執行時間

int main(){  

clock_t  startTime, endTime;   #定義開始和結束時間

startTime = clock();  

for (int i = 0; i < 1000000; i++)  #需要計算執行時間的迴圈時間

{  i++;  

 }  

endTime=clock();  

cout << "Totle Time : " <<(double)(endTime - startTime) / CLOCKS_PER_SEC << "s" << endl;  

     system("pause");  

return 0;  

} 2.4 R 語言編程的進階應用程式

(1)R語言編寫高品質報表

table是R語言產生統計報表的基礎。我們看到醫學化驗單、影像報表的形式,都是醫學專業、簡潔、數學表示的,R語言的統計和計算特徵與此相似。製作高品質報表被稱為“展示你最好的一面”。在R語言編程環境或RStudio圖形環境下,R Markdown和knitr軟體包可建立資料分析報告。R Mardown提供了簡單文法產生分析報表,包括普通文字、R代碼、以及行內代碼。knitr在此基礎上產生HTML、PDF、word文檔格式的報告,以及投影片,並且可在指定位置產生R代碼的執行結果。軟體包knitr和rmarkdown。

library(knitr)

library(rmarkdown)

未完待續

轉載地址:http://www.baike.com/wiki/R%E8%AF%AD%E8%A8%80%E7%BC%96%E7%A8%8B

【詩詞曲賦】

                                                                                                      江城子

                                                                                                             蘇軾

十年生死兩茫茫。
不思量,自難忘。
千裡孤墳,無處話淒涼。[1]
縱使相逢應不識,
塵滿面,鬢如霜。

夜來幽夢忽還鄉。
小軒窗,正梳妝。
相顧無言,惟有淚千行。
料得年年斷腸處,
明月夜,短松岡。

注釋[1]  蘇軾紀念夫人

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.