R語言缺點

 


R的優勢:免費,開源,體積小。
缺點:對大文本處理差,另一個也在於開源,package若是出錯,煩死你。
當你跑比較大的simulation,對效率有要求的時候,有時仍是不得不用C,這多是10小時和10分鐘的差異,絕不誇張。
SAS流行於公司,R流行於研究機構和大學
數據分析不是單純的靠軟件來作的,須要很好的數學基礎。html

統計學工具各有千秋。
https://englianhu.wordpress.com/statistics/
學了R,能夠免去學spss,matalab,ucinet等等衆多的軟件,能夠減小很多的學習時間,前景應該不錯
若是lz不許備搞數據數據挖掘相關的東西,最好仍是學學python一類更通用的語言。若是搞數據挖掘的話,還能夠學學hadoop...這種有專業背景的語言不會隨便就消失的,前景不差~
r的數值計算沒有像matlab高精度,好比算出應該是3的,可能r裏面輸出2.998。python

 


就一個R和SAS精通程度幾乎相同,在兩種環境下都作過比較大(moderately big, ~xx Gb)的數據分析,與其餘語言環境嵌合(SQL, Perl, etc...)使用過的我的(統計專業人員,非編程專業人員)的感覺而言:程序員

R的優勢:
1. 免費... 開源... (這是最重要的一點好很差,也是SAS流行於公司,R流行於研究機構和大學的最主要緣由)
2. 是專門爲統計和數據分析開發的語言,各類功能和函數琳琅滿目,其中成熟穩定的一抓一把
3. 語言簡單易學。雖與C語言之類的程序設計語言已差異很大(好比語言結構相對鬆散,使用變量前不需明確正式定義變量類型等等),但仍保留了程序設計語言的基礎邏輯與天然的語言風格。我這樣說可能讓人聽得雲裏霧裏,可是若是你對SAS或者SPSS有一點點了解,就會明白個人意思了...
4. 小... 安裝程序只有50Mb左右,比起某些死貴且3個G的付費軟件真的是超級迷你小巧玲瓏... 由於體積輕便,運行起來系統負擔也小。
5. 同各類OS的兼容性好。我兩臺本本一臺Windows,一臺Linux,都用得很順手。相比之下,你有見過人在Mac上用SAS嗎... 這人是要多麼的想不開... =. =
6. 由於用的人愈來愈多,又是開源,有不少配套的「插件」爲其錦上添花。好比xtable裏有一個函數能夠直接將R裏的表格導出爲TeX格式;另有RStudio的插件讓你能夠在同一個環境裏寫TeX跑R並可在你的TeX文件中插入你的R代碼,多麼的賢良淑德... (這個插件我沒用過,不過我同窗一天到晚在用)
7. 有R GUI和RStudio兩種風格供君選擇,說實話我以爲這兩種風格已經涵括了大多數人的使用偏好...
8. 已經提過了開源,還想再強調一下。各類包和函數的透明性極好,這使得對函數的調整和改良變得很是便利。只須要把源碼調出來,本身稍微修改一下就能夠了。這種事情放在任何其餘統計軟件裏都近乎奢望。
9. 若是你作Bayesian,用R你有OpenBUGS, WinBUGS, JAGS等各類成熟活潑的包裹,不少語言又簡單又附帶各類預設的plot,你只需調用便可;還能夠本身寫MCMC。若是你用SAS/SPSS/Stata,你能夠... @@? = =bbb
10. 漂亮又靈活的圖,你們也都已經講過了。本來不是什麼特別突出的長處(有則好,沒也沒啥),不過如今數據可視化愈來愈熱,也就一躍成爲主要優勢了。算法

說說缺點:
1. 對大文本(text data)處理極差... 或者說data management本就不是R的強項。SAS於R的最大優點之一可能就在於它兼顧了數據分析和數據管理。在SAS裏對數據進行各類複雜操做都相對容易,只須要簡單的DATA STEP(必要時結合PROC SQL)便可完成;在R裏可就真的是千辛萬苦... 雖然也有相應的aggregate, merge之類的函數,可是大都不太好用。這也是爲何你們經常把數據(尤爲是數據大時)在別的環境下整好/分割好再餵給R。人家術業有專攻,數據管理真是有些難爲它了。
2. 內存管理和平行處理(parallel processing/programming)都爲人詬病。數據小時沒有感受,數據大了就各類報錯... =. =
3. package的可靠性問題。我第一門徹底使用R作做業的課是門統計課,教授已經六十多歲,見過各類統計軟件的出生發展和湮沒。她同咱們說到R時第一句話就是Never use a package before you understand the manual and confirm the validity of the functions. 也就是包裹雖然好,使用需謹慎。主要緣由仍是在於開源。不經常使用的package必定要搞清楚函數的用法和核實過輸出,否則真的不推薦使用。我我的也是傾向很是用函數儘可能本身寫,至少錯了也容易debug...
4. 不得不提的package的版本問題。 就算你確認了包裹的可靠性並熟知了各個變量要怎麼用,仍是可能掉入潛在的陷阱=. = 講個真事:去年工做的時候一個項目是使用11年某項目的一個貝葉斯模型分析新的數據。當年寫代碼的人由於相信末日說兩年前就已經辭職環遊世界去了,因而我只好獨自研讀他的代碼。第一步,很天然的,就是重複當年的分析結果。這時發現當年他用的一個package和如今的R已經不兼容,因而就下載了這個package的最新版本。結果有一個簡單的credible interval怎麼都重複不出來... 怎麼怎麼都重複不出來... 我都快絕望了。最後經各類推理驗證,發現這個區別源自於新舊版本的函數內部在對數據排序以後對NaN的不一樣處理... 而這個小小的修改未在任何地方留下任何文字記錄。因此怎麼說呢... 不少時候仍是寫本身的程序靠譜哇...
5. 當你跑比較大的simulation,對效率有要求的時候,有時仍是不得不用C,這多是10小時和10分鐘的差異,絕不誇張。
6. 想不出來樂 =w=sql

大體就是這樣。編程

最後,由於不是學計算機出身,文中與編程語言和系統相關的措辭可能不許確或有誤用,請程序員們多包涵=)

 

 

RStudio在yihui大神的加入之下有knitr了,不必定要寫TeX,能夠寫markdown。
數據管理確實頭疼,因此hadley大神作了plyr和dplyr嘗試改變這一局面。
內存管理多用gc()……
從運行效率出發必然是C厲害,不過開發效率就……???因此出現了Rcpp包後端

 

R若是做爲一門程序語言確實不怎麼樣,感受從基礎架構往上推都是亂的。最簡單的,函數的參數何時值傳遞、何時地址傳遞,徹底搞不清。語言一點也不簡潔。R的優勢就是能夠用的package不少也很全,但除此以外真是不喜歡用,比python差遠了。瀏覽器

R內部函數參數歷來不傳地址安全

R語言的語法仍是很不錯的, 我的以爲比MatLab好, 然而函數和工具包的體系確實一片狼藉, 函數名毫無規律, 函數對參數的要求千奇百怪, 參數的語義也是千奇百怪, 編程一直離不開在線文檔服務器

一個package一套路子,要用其中一個函數就巴不得把整個manual瀏覽一遍,累死我的。

 

1. 大文本處理是什麼鬼;data management? 你是說data manipulation吧,若是我沒記錯,2014年dplyr早就出來了
2. 內存管理是內存管理,並行處理是並行處理。內存管理R是不咋的。並行處理是MPI和*nix的fork機制,跟編程語言不要緊
3. 教授的意思,不光是可靠性問題吧,還有別光用包用得爽,得知道包後面的統計方法,以及當前是否適用。就包自己,一大票包是統計方法提出人本身寫的,雖然效率可能不咋的,但正確性比Python一大票工程師寫的統計包強多了(沒有鄙視Python的意思)
4. 版本問題,誰也跑不了。*nix的包管理,Python的virtualenv,R的Packrat
5. 效率腳本語言的確比不上編譯語言,除非像Google花大價錢堆出V8的Javascript。不過就算是腳本語言,爛代碼也能比好代碼慢上幾個數量級

另,某樓說函數參數何時值傳遞,何時地址傳遞,徹底搞不清,那只是你搞不清。R的解釋器最初是拿某Scheme的解釋器改過來的,別一看跟想像的或經驗不一致,就以爲「從基礎架構往上推都是亂的」

 

 

R語言
優勢:
  1. 免費/包多,上手快,還有其餘提到的;
  2. 咱們使用下來R最好功能是:畫圖,(ggplot2,plotly,shiny,ggmap,用起來真的很方便),ggplot2畫靜態圖,plotly畫交互圖、shiny能夠用網頁交互,ggmap畫地圖類可視化
  3. 基於內存,訓練速度還算快,代碼量少;
  4. 開源,開發者還很多,是個不斷壯大的社區,而且也發展的比較成熟了
  5. 輕量,使用數據量相對少的模型項目,幾個G的數據,用16G內存的電腦吃得消;
  6. Rstudio用起來真的挺好的,界面很是友好,是個很優秀的IDE;
缺點:
  1. 不少人懂R語言,寫出來的代碼速度很是慢,特別是有些人總是喜歡寫循環,我想說的是R語言恨透了循環。畢竟不是每一個人都會用Rcpp寫代碼的;
  2. 目前主流的DeepLearning的包都沒有相關的R package,而python通吃;R如今只有一個明星產品mxnet,h2o勉強算1/4;
  3. 數據量足夠大了以後,R確定是不適合了,內存要爆掉的;
  4. R的package很是的泛,開發包的人水平良莠不齊,不少package都沒有持續的更新,不少bug都沒有修復(python相對來講會好不少,sklearn持續更新)
  5. 若是是在服務器上安裝R的package,你想死的心都有,由於依賴、依賴、依賴啊,在不能聯網的服務器上,你要手工的把依賴、依賴、依賴包都線安裝好,心真累;

 

下面說說本身感覺到的缺點,可能比較基礎,各位大神不吝賜教啊
1.由於package來自不一樣貢獻者,各個包的使用習慣可能差別極大,這實際上無形中增長了使用者的學習成本。這點實在很難細說,各位答題者應該都或多或少有所體驗。不過,強烈建議初學者注意數據在R中的保存類型(這麼說合適嗎?),就是函數class的返回值。若是忽略這個,極可能哪天就卡死在一個函數上了,對於某些奇特的類型,使用常規函數分析前須要預先處理。不過熟悉以後這個基本不會是大問題。
2.package的質量實在良莠不齊。
野雞的包不要用。
野雞的包不要用。
野雞的包不要用。
嗯,沒聽過的、沒見過的、不是核心包的包不要用。


若是非要類比的話,Matlab是長槍大戟,攻城略地所用。毋庸置疑,python是衝鋒槍,已經進入現代戰爭(指大數據分析)。然而,R是一柄劍,輕靈銳利。
最後,借用《英雄志》裏的一句話:劍是天才的武道。

 


SAS: 速度快,有大量統計分析模塊,可擴展性稍差,昂貴。
SPSS: 複雜的用戶圖形界面,簡單易學,但編程十分困難。
Splus: 運行S語言,具備複雜的界面,與R徹底兼容,昂貴。

R的缺點
用戶須要對命令熟悉:與代碼打交道,須要記住經常使用命令。
佔用內存:全部的數據處理在內存中進行,不適於處理超大規模的數據。
運行速度稍慢:即時編譯,約至關於C語言的1/20。
相比點擊鼠標進行操做,R仍可以大大提升效率。


優勢:統計前沿的主流語言;擴展性好;對內存和並行運算的詬病其實不少人沒真的理解r(它不適合直接就支持的,Revolution能夠),內存不是r的限制,r的確是在內存中作運算的,但若是對計算機語言和統計算法的掌握不夠,就會獲得以上的結論。
缺點:一點沒基礎的人很難起步,不過如今有視頻和培訓了;要精通r很難,這點在上面內存已經說過了,這其實國內統計教育的失敗之處;r包如今發展極快,學習r須要耗費大量精力(嚴格這不是r的問題,而是中國社會環境的問題)

優點: 
  • 能完成絕大部分數據相關的分析、統計、挖掘、可視化等工做
  • 能和Hadoop等大數據解決方案一塊兒工做
劣勢:
討厭的賦值符號 <-

涉及到中文的時候亂碼問題老是出現

 

 

優勢:

- 軟件包豐富
- 文檔化幫助信息很友好,簡單易學
- 兼容性好,跨平臺
- 對統計分析自然支持
- 有RStudio這種大殺器

缺點:

- 對文本處理不是很靈活,尤爲是和Python對比
- 當數據大的時候,尤爲涉及讀寫文件,感受效率不是很高(也多是我本身不會優化)


優勢開源,可是不少人爲了方便會寫些R包,不少R包的正確性和效率難以保證。
R老是將數據存儲在內存中,因此不適合作大數據量處理。
R 的主要優點是開源,自由,有cran,不少學者的paper 或者著做,直接提供了R codes。其主要由統計學家實現,語法比較適合統計分析,但這一樣也是他的缺點,沒有專業的計算機專家輔助,難以有高質量的實現。好比高性能、大數據量計算,這塊比matlab 和 SAS差距好大,matlab 能夠利用多核自動並行化,R只能利用一個核,而且內存佔用很恐怖,對於大數據量是個噩夢


R的優勢:
1. 免費... 開源... (這是最重要的一點好很差,也是SAS流行於公司,R流行於研究機構和大學的最主要緣由)
2. 是專門爲統計和數據分析開發的語言,各類功能和函數琳琅滿目,其中成熟穩定的一抓一把
3. 語言簡單易學。雖與C語言之類的程序設計語言已差異很大(好比語言結構相對鬆散,使用變量前不需明確正式定義變量類型等等),但仍保留了程序設計語言的基礎邏輯與天然的語言風格。我這樣說可能讓人聽得雲裏霧裏,可是若是你對SAS或者SPSS有一點點了解,就會明白個人意思了...
4. 小... 安裝程序只有50Mb左右,比起某些死貴且3個G的付費軟件真的是超級迷你小巧玲瓏... 由於體積輕便,運行起來系統負擔也小。
5. 同各類OS的兼容性好。我兩臺本本一臺Windows,一臺Linux,都用得很順手。相比之下,你有見過人在Mac上用SAS嗎... 這人是要多麼的想不開... =. =
6. 由於用的人愈來愈多,又是開源,有不少配套的「插件」爲其錦上添花。好比xtable裏有一個函數能夠直接將R裏的表格導出爲TeX格式;另有RStudio的插件讓你能夠在同一個環境裏寫TeX跑R並可在你的TeX文件中插入你的R代碼,多麼的賢良淑德... (這個插件我沒用過,不過我同窗一天到晚在用)
7. 有R GUI和RStudio兩種風格供君選擇,說實話我以爲這兩種風格已經涵括了大多數人的使用偏好...
8. 已經提過了開源,還想再強調一下。各類包和函數的透明性極好,這使得對函數的調整和改良變得很是便利。只須要把源碼調出來,本身稍微修改一下就能夠了。這種事情放在任何其餘統計軟件裏都近乎奢望。
9. 若是你作Bayesian,用R你有OpenBUGS, WinBUGS, JAGS等各類成熟活潑的包裹,不少語言又簡單又附帶各類預設的plot,你只需調用便可;還能夠本身寫MCMC。若是你用SAS/SPSS/Stata,你能夠... @@? = =bbb
10. 漂亮又靈活的圖,你們也都已經講過了。本來不是什麼特別突出的長處(有則好,沒也沒啥),不過如今數據可視化愈來愈熱,也就一躍成爲主要優勢了。

說說缺點:
1. 對大文本(text data)處理極差... 或者說data management本就不是R的強項。SAS於R的最大優點之一可能就在於它兼顧了數據分析和數據管理。在SAS裏對數據進行各類複雜操做都相對容易,只須要簡單的DATA STEP(必要時結合PROC SQL)便可完成;在R裏可就真的是千辛萬苦... 雖然也有相應的aggregate, merge之類的函數,可是大都不太好用。這也是爲何你們經常把數據(尤爲是數據大時)在別的環境下整好/分割好再餵給R。人家術業有專攻,數據管理真是有些難爲它了。
2. 內存管理和平行處理(parallel processing/programming)都爲人詬病。數據小時沒有感受,數據大了就各類報錯... =. =
3. package的可靠性問題。我第一門徹底使用R作做業的課是門統計課,教授已經六十多歲,見過各類統計軟件的出生發展和湮沒。她同咱們說到R時第一句話就是Never use a package before you understand the manual and confirm the validity of the functions. 也就是包裹雖然好,使用需謹慎。主要緣由仍是在於開源。不經常使用的package必定要搞清楚函數的用法和核實過輸出,否則真的不推薦使用。我我的也是傾向很是用函數儘可能本身寫,至少錯了也容易debug...
4. 不得不提的package的版本問題。 就算你確認了包裹的可靠性並熟知了各個變量要怎麼用,仍是可能掉入潛在的陷阱=. = 講個真事:去年工做的時候一個項目是使用11年某項目的一個貝葉斯模型分析新的數據。當年寫代碼的人由於相信末日說兩年前就已經辭職環遊世界去了,因而我只好獨自研讀他的代碼。第一步,很天然的,就是重複當年的分析結果。這時發現當年他用的一個package和如今的R已經不兼容,因而就下載了這個package的最新版本。結果有一個簡單的credible interval怎麼都重複不出來... 怎麼怎麼都重複不出來... 我都快絕望了。最後經各類推理驗證,發現這個區別源自於新舊版本的函數內部在對數據排序以後對NaN的不一樣處理... 而這個小小的修改未在任何地方留下任何文字記錄。因此怎麼說呢... 不少時候仍是寫本身的程序靠譜哇...
5. 當你跑比較大的simulation,對效率有要求的時候,有時仍是不得不用C,這多是10小時和10分鐘的差異,絕不誇張。

 

 

 

 

 


除了統計函數包外,對於常規運算,R基本上乏善可陳,語法晦澀,性能奇差;因此如今R大有被python取代的趨勢。
對於結構化數據計算,R的集合式語法和data frame對象已經被python的pandas包複製了,可是這二者作的都還不夠好。這方面更有優點的開發語言是esproc,提供了遠比data frame更強大的數據對象,一樣有集合式語法但更天然易懂,遍歷外存文件數據的的性能超過R的十倍以上。

下載了這本書的試讀的16頁,首先顏色排版看着是很舒服的,列子講解也比較詳細,並配有相應圖片。由於是初學者,因此非常但願看到書籍中具體事例,好比書中的燈泡的平均壽命那個,但是不知道能從事例弄出來的指數分佈曲線圖分析出些什麼(沒有統計分析的底子,看這些比較難,主要不知道最後怎麼去應用)。
R語言對我來講難點就是沒有統計分析學背景,而且不少數學公式徹底不知道怎麼回事。對算法基本上算小白。不過期間充足的狀況下這些都是能夠攻克的。

1. 你們以爲R語言難學嗎?困擾你的主要是什麼?
R語言很是易於入門,它的函數的使用很簡單,開發IDE的使用也很簡單。
咱們最愛使用的是RStudio開發工具。
可是,精通R語言也有一些難點或者說是困擾,主要表如今:
1)R語言的包/庫極其龐大,有數千個,不少時候你並不知道該使用什麼包/庫來解決問題。
2)正如第一點所說,庫太多,並非全部的包/庫都是高質量的,使用某些庫分析數據得出的結果有多是相互矛盾的。
3)R語言跟機率論和數理統計結合緊密,數學功底不深的話,難以精通R語言。

2. R能夠實現數據分析中的哪些工做?
R語言能夠實現數據分析中的絕大多數工做。
能夠進行數學運算;
能夠進行 統計和分析;
能夠作快速傅里葉變換;
能夠進行平滑和濾波;
能夠作基線和峯值分析。
- 數據傳遞及服務(RHive、Rserve、rJava)
- 清洗及預處理(sqldf、stringr、XML)
- 抽樣、分類、關聯覎則、特徵選擇、稀疏矩陣運算、矩陣分解、社交網絡
- 高性能計算(rhdfs、rmr二、Rcpp)
等等

3. 你曾經使用或編寫過R軟件包嗎?
曾經在某個項目中頻繁使用。後來用Python的數據分析包更多一些。
一句話,不限於R語言,快速解決問題是根本。

4. 說說您讀完試讀樣章後的啓發
樣章提供了第四章「隨機數與抽樣模擬」的內容,從這章的內容來看,書籍描述比較淺顯易懂,並無長篇大論的理論分析,而是以例子爲主,伴隨講述了不少函數。不錯的書,渴望一讀。
從統計學自己來講,R與其餘的軟件都是能夠大大地增長生產力的輔助工具。而且R與商用軟件相比,着實有些寒磣。從樣章來看,不太喜歡這樣羅列各類功能的結構,若是可以以一個案例的形式講解如何應用的具體場景,效果會更好些。


1如何掌握r
答:要想快速掌握R的最好方法是選擇一本叫好的參考書,跟着參考書學一遍即基本上學會R了,固然若是要想熟練使用,仍是須要本身在實際的數據分析中多用多思考。
2實際數據分析中r使用有什麼能夠分享的經驗
答:實際分析中R的使用要具體問題具體分析。通常來說:(1)在讀入數據以前,先看一下每一個變量的類型,是連續的仍是離散的?每每離散的變量須要轉換成虛擬變量;(2)寫code過程當中,勤加註釋,由於可能過幾個幾天都不認識本身寫的code了;(3)寫程序時儘可能少用循環,能用矩陣運算儘可能用矩陣運算。

3內存溢出如何辦
答:內存問題始終是限制R的一個問題之一。通常來說,加大內存是最好的方法,因此碰到海量數據時,建議通常用HPC(高性能計算機)去運算;另外一方面看看有無可能優化本身的算法,尤爲是不要有太多的循環,循環是R的薄弱環節。此外,還能夠清理一些不用了的對象來釋放內存,若是真的須要大計算的話,能夠看一些處理大內存對象與並行計算的軟件包等,好比bigmemory等。

4數據分析算法如何根據問題選擇
答:數據分析算法的選擇是很是複雜的一個問題,這個不只僅是R的問題了,而是統計的問題,每種統計方法、算法都有其適用的條件,不是全部場合都套上去就能夠了,因此學習R來講,其實最好是結合統計、數據分析的方法來學是最好的。

5異常數值和缺失數值如何處理
《R數據分析-方法與案例詳解》的第5章有講解,請參考。

6特徵變量如何構造,衍生變量如何構造
《R數據分析-方法與案例詳解》的第5章有講解,請參考。

 

 

 

 


  R的短板在於安全性與內存管理
  說了這麼多優點,R語言固然也存在着必定不足。「內存管理、速度與效率多是R語言面臨的幾大最爲嚴峻的挑戰,」Adams指出。「在這方面,人們仍然須要努力推進——並且也確實正在推進——其進展與完善。此外,從其它語言轉投R懷抱的開發人員也會發現後者在某些設定上確實有些古怪。」
  R語言的基本原理來自上世紀六十年代出現的各種編程語言,Peng解釋道。「從這個意義上講,R語言在設計思路上屬於一項古老的技術成果。」這種語言的設計侷限有時候會令大規模數據集處理工做遇到難題,他強調稱。由於數據必須被保存在物理內存當中——但隨着計算機內存容量的不斷提高,這個問題已經在很大程度上獲得瞭解決,Peng指出。
  安全等相關功能並無被內置在R語言當中,Peng指出。此外,R語言沒法被嵌入到網絡瀏覽器當中,Peng表示。「咱們不能利用它開發Web類或者互聯網類應用程序。」再有,咱們基本上沒辦法利用R語言看成後端服務器執行計算任務,由於它在網絡層面缺少安全性保障,他表示。不過Amazon Web Services雲平臺上的虛擬容器等技術方案的出現已經在很大程度上解決了此類安全隱患,Peng補充道。
  長久以來,R語言當中始終缺乏充足的交互元素,他表示。但以JavaScript爲表明的各種編程語言介入其中並填補了這項空白,Peng指出。雖然咱們仍然須要利用R語言處理分析任務,但最終結果的具體顯示方式則能夠由JavaScript等其它語言來完成,他總結道。
  R語言並不單純面向高端程序員
  不過Adams與Peng都會R視爲一種易於接受的語言。「我本人並無計算機科學教育背景,並且歷來沒想過要當一名程序員。將編程基礎知識歸入技能儲備固然很不錯,但這並非上手R語言的必要前提,」Adams指出。
  「我甚至並不認爲R語言只適用於程序員。它很是適合那些面向數據並試圖解決相關問題的用戶——不管他們的實際編程能力如何,」他強調稱。

 

 

 

 http://www.itpub.net/thread-1913151-1-1.html

 

 

http://www.dataguru.cn/article-8508-1.html

摘要
儘管在工業界仍是被 SAS 所統治,可是 R 在學術界卻獲得普遍的應用,由於其免費、開源的屬性使得用戶們能夠編寫和分享他們本身的應用。然而,許多正在得到數據分析相關學位的學生們因爲缺少 SAS 經驗的狀況而在找工做的路上困難重重,與此同時,他們要面對從學校熟悉的 R向 SAS 轉型的痛苦。理想狀況是,你須要知道全部可能的編程語言,工做的時候使用與工做狀況最匹配的那個,固然這個基本上是癡人說夢。咱們的目的就是展現這兩種差別巨大的語言各自優勢,而且共同發揮他們的優點,咱們同時還要指出那些不使用 SAS 好多年的、如今正在使用  R語言的人們的一些誤解和偏見,由於他們已經不多關注 SAS 的發展和進步了。
 
前言
咱們選取 SAS 和 R 的緣由是由於他們是目前在統計領域中最有統治地位的兩個編程語言。 如今咱們注意到一個很差的現象,就是在學術界重度使用R的用戶認爲R在被SAS霸佔的工業界有具備至關優點的,然而熟練掌握這兩個軟件對於想在數據分析領域取得小有成就的年輕人來講很關鍵。教授誤解加上對某個軟件的偏好每每對學生有着不利的引導,所以須要在這裏指出:教授們,別偷懶了,對某種語言的主觀偏好將會影響學生的錢途。
 
SAS常常有一些更新(有點慢),非SAS程序員因爲沒有技術跟進每每並不知情。SAS繪圖模塊就是一個快速發展併成長的例子,然而許多人並不注意到這些升級以致於他們仍然執拗的使用 R畫圖。SAS另外一個不廣爲人知的例子是SAS能夠輕鬆自定義函數,這正是 R 的強項。這個SAS過程步(PROC)有全面的語法檢查、翔實的文檔和技術支持;然而一個新的使用者極可能不知道這些工具可用,或者根本不知道它們的存在。另外,SAS 還擁有卓越的培訓課程,網絡及用戶組分享資源,不一樣相關主題的大量書籍。知道併合理的使用這些技術以及工具 有助於減小使用 SAS的畏懼之心。
 
相關問題討論
本文就在咱們學院碰到的一些共同誤解的地方,在此對比列出兩種語言的優缺點。固然還有更多的爭論在進行中,可是本文匯中咱們將選取更爲廣泛的來進行討論。咱們但願可以消除誤解,而且儘量地爲那些不能及時跟進R或SAS的分析人士提供新的信息。
 
1.統計方法的新進展
 
SAS
優勢:SAS 的軟件及 算法都是通過檢驗的,SAS 有技術支持去快速解決用戶的需求。 若是須要的話,SAS 會嘗試在已存在的步驟中嵌入新的方法,例如增長一個選項或者新增一個語句(statement),所以用戶不須要學習另一個過程步。SAS也 會發布通信來詳細說明軟件的更新。
Ÿ
缺點:更新升級較慢。
 
R
優勢:用戶能夠快速實施新方法,或者尋找已經存在的軟件包。很容易學習和理解新方法,由於學生們能夠看到代碼中的函數。
 
缺點:R 文檔的更新都是經過用戶進行的,因此新的方法並無被很好調試和檢驗。 開發者們散佈於各地,而並無在一塊兒來進行團隊合做的開發。
 
在這個問題上,SAS 和 R 的優缺點是互補的。對於 R,有人認爲它的代碼是開放的,能夠看到 R 是如何工做的,這對於擁有相關背景的人是比較容易理解的。然而對於 SAS,它的過程步是預裝的,文件中對不一樣的語句(Statement)及選項( Option) 存儲了大量的數學公式。若是用戶真的想看到底層程序,這個也是很容易實現的。對兩種語言的使用着者來講,無論是學生仍是其它用戶,只是運行代碼的話對於兩種語言是沒有什麼不一樣的。你運行SAS,不須要知道它在幹什麼,相似的是,你運行R時,也不須要知道它在後臺調用的函數。你所作的就是按章操做而已。
 
2.畫圖
 
SAS
優勢:SAS畫圖模塊正變得愈來愈靈活、精良和易於使用。在一些分析過程步(PROCs) 中,ODS Graphics能夠自動的生成一些圖形,而不須要額外的代碼。這使得用戶多了一個選擇,便可以使用默認的圖表生成圖表,也能夠本身來創造個性化的圖表。
 
缺點:圖形背後的模板語言(TL)是龐大及不易使用的,特別是對於新手來講。新的高級功能如交互式繪圖功能( interactive graphs),對於新手來講也是難以掌握的。
 
R
優勢:能夠簡單的生成漂亮的圖表,還能夠使用循環語句來生成動畫。
 
缺點:在 R 中圖表功能與統計分析無關,繪圖和分析是相互獨立的。用戶必須本身來決定什麼樣的圖形是合適的,使用效果的好壞取決於用戶們的統計背景和喜愛。儘管改變圖形去達到特別的維度或角度並非一個簡單事兒。
 
SAS9.2 以前版本的圖表功能不足是 R 更吸引人的一個主要緣由之一。R的一個較好的特性之一就是其圖表功能的高質量性和易用性。可是,當前 SAS/GRAPH 搭配 ODS Graphics 及 SG 過程在軟件中增長了製圖的能力。聯合使用 ODS graphics 和 PROCS 能夠使用戶簡單地生成與分析相關的展現圖表。 特定的繪圖過程步如PROC SGPLOT,SGPANEL和SGSCATTER等愈來愈多,固然須要的必定代碼來實現。另外,SAS 中還有一些其餘不錯的繪圖選擇,如 SGDESOGNER 和 SAS Enterprise Guide。
 
3.函數及可重複使用的代碼
 
SAS
優勢:SAS有可在 DATA 和 PROC 步使用的大量函數和自定義函數。另外強大無所不能的、也能夠被DATA步和PROC步使用的宏語言。宏變量可定義爲局部或者全局類型。
 
缺點:編寫自定義函數和詳細的宏代碼須要深厚的編程知識來確保正確性。
 
R
優勢:在 R 中編寫函數很簡單,用戶也能夠經過上傳本身的函數到 R-CRAN 上與其 它用戶分享。
 
缺點:編寫自定義函數須要深厚的編程知識來確保正確性。變量是嚴格的局部變量。
 
在這一點上兩種軟件擁有相似的利弊。SAS 的早期用戶運行本身的定製函數主要取決於宏程序的編寫,這也是 R 用戶認爲其低效及笨重的緣由。然而,SAS 9 版本的 PROC FCMP容許用戶編寫個性化的函數,SAS 9.2 版本又容許用戶在 DATA 及 PROC 步中調用這些函數。 這對於簡單的統計函數是頗有用的,對於更加複雜的統計函數也能夠經過 IML 語言來實現。
 
SAS 及 R 兩種語言都面臨着怎樣有效地、正確的使用函數,這就須要用戶在函數編寫的過 程中擁有深厚的編程背景。從好的角度來講,一個程序員須要知道他們編寫的是什麼;危險的是,其它人能夠下載一個 SAS 宏或者 P 程序包來使用,儘管他們不知道其內在工做原理, 甚至不知道其正確性。因此,有了對宏及函數適當的瞭解,再來分享它們並應用於具體的需 求是很方便的。
 
4.免費軟件
 
SAS
優勢:SAS 有OnDemand 版本的軟件,免費提供給學位頒發機構。
 
缺點:真正的 SAS 和 JMP 並非免費的。OnDemand 版本對使用何種操做系統有一 些限制,並且據反映運行速度很慢。
 
R
優勢:R 是徹底免費。
 
缺點:開源軟件對於大公司來說都會有安全方面的擔心。
 
SAS公司爲教育機構提供的免費替代品能夠保證教授們在課堂上的使 用。對於 OnDemand 的安裝過程和速度須要注意。總之,SAS 和 JMP 不是免費的,公司須要使用許 可來使用該軟件。R 能夠免費的安裝,但許多參與論戰的博主們認爲若是那些正在使用 SAS 的公司去使用 R,將會花費遠遠超過 SAS 受權費用的資源和財力,例如重寫代碼、構建新 的團隊、招聘新的專業人員等等。並且對於那些分析結果須要經得起嚴格檢驗要求的公司, 可能 SAS 更加適合。尚未現存分析框架的小公司能夠來探討是選擇歷史悠久、資源豐富的付費軟件(SAS),仍是要選擇雖然免費、可是還須要其它先期投資(如員工的知識背景, 編寫及調試代碼)的軟件(R)。最終,從時間和金錢的角度來衡量,SAS 和 R 的花費可能 是基本接近的。
 
5.用戶支持
 
SAS
Ÿ優勢:SAS 有豐富的網上參考資料,專業的技術支持,專業的培訓課程,許多優秀 的出版書籍,一個緊密的用戶組及網絡社區。SAS 的問題能夠直接反映給技術支 持部門,他們會與用戶一塊兒來解決。
Ÿ
缺點:真的沒想到。
 
R
優勢:R 有很好的示例手冊,網上參考材料,R 郵件列表和 R 聚會。
 
缺點:用戶們取決於其它用戶對於軟件的見解及建議。由於 R 的開發者散佈於全球 各地,因此全球的用戶是缺少聯繫的。程序包(Package)並非由 R 軟件的開發 核心團隊來編寫的,因此致使了程序的不完善甚至有時候會對結果的正確性有所懷 疑。另外,很難去直接尋找一個針對具體問題的人員或者團隊。
 
SAS 所提供的卓越的支持是他們以客戶爲中心設計產品的亮點。SAS 支持的優勢對初 學者是理想的幫助,其大量的細節也使資深用戶受益不淺。R 較爲混亂的參考資料和匱乏的 技術支持在須要尋找幫助時困難重重。這違背了 R 的開發設計者的初衷。
 
6.數據處理
 
SAS
優勢:SAS 能夠處理任意類型和格式的數據。DATA 步的設計純粹就是爲了數據的管 理,因此 SAS 擅長處理數據。利用豐富的選項,SAS 能夠將大數據處理的很好,拼表以及 PROC  SQL 也能夠減小運行時間。
 
缺點:在 DATA 步驟中 SAS 中的DATA步有非明示的循環算法,所以使用者的編程思惟須要改變以符合SAS的運行邏輯。
 
R
優勢:R 在最初就被認爲是更加適合大數據的。它對於矩陣的操做和排序的設計是非 常高效的。R 也能夠很好的進行各類基於分析的數據模擬。
 
缺點:R 的設計更加關注統計計算以及畫圖功能,因此數據的管理是比較耗時的,而 且不如在 SAS 中那麼明晰。其中一個主要的緣由就是:對於各類不一樣類型的數據,在 R 中進行很好的數據處理是比較難以掌握的。
 
數據處理的重要性常常在統計編程中被忽視了,可是它確實是很是關鍵的,由於實際的數據很是糟糕,不能直接應用於分析。純粹地使用 R 的學生們對於獲得的數據每每有不切實際的指望,而學習 SAS 是一個有效的方法去解決怎樣整理原始的數據。SAS能夠對大而繁雜的數據集進行管理和分析,而 R更着重於進行分析。
 
當處理複雜數據時,R 的面向對象的數據結構會遇到不少問題,而且R還缺少一個內在的循環過程。在SAS中,應用標準化工具常常會進行以下操做:合併含有大量缺失數據的複雜數據集,再生成及修改其中的變量。而在R中,進行復雜的數據處理操做是沒有標準化的,並且常常會致使更加複雜的過程。
 
SAS與R軟件運行時間的快慢對比取決於任務。如SAS能夠經過設置 MEMLIB,從而像R同樣使用內存(而非硬盤)來提高運行速度。但在R中,沒有這樣的硬件驅動,只能使用內存來執行。
 
7.安裝
 
SAS
優勢:SAS全部的分析功能及受權都被總體打包在一塊兒安裝。升級受權證書是很是容易。
 
缺點:首次安裝或升級到一個新的版本是很耗時且有點麻煩的。可是這比在課堂上向 學生們講述如何使用這個軟件簡單1000倍。如今愈來愈多的學生們在課堂上使用Macs系統的筆記本,可是SAS沒有Mac版,意味着這部分學生沒法使用 SAS。
 
R
優勢:R 和其最經常使用的用戶界面 RStudio 在 Window、Mac 和 Unix 環境下都很容易安 裝和打開,且安裝速度都很快。
 
缺點:運行必須知道知足需求的程序包,而後搜索、安裝、瞭解具體功能。截止原文發表時,共有 4379 個可用程序包,這一數量還在天天增長。在提供了更多選擇的 同時,也增長了搜尋的時間和難度。
 
SAS 的得到對用戶來講比較困難,首次安裝也是比較麻煩的。可是一旦安裝完成了, 有關軟件自己的問題就不多了,對於特別的分析,也不須要額外的程序包或者步驟了。R 中 相反,安裝很是簡單,但對於額外分析,須要另外安裝程序包,浪費了安裝軟件所節省的時 間。
 
8.報表
 
SAS
優勢:SAS 經過不少有用的過程步來生成詳細漂亮的報表。
 
缺點:能提供更詳盡報表的過程如 TABULATE、REPORT 等,在能正確而有效的使用前,將爲有一個艱難的學習曲線等待你跨越。
 
R
優勢:報表方面,R擁有諸多利器。Sweave包能夠創造包含文字、表格和圖形的 PDF 文件,其中圖形能夠LaTeX 和 R 命令來裝扮。另外一個新的程序包 Knitr 能夠快速生成格式限制較少的網頁內容。
 
缺點:R 沒有一個模式化的方式來生成報表,因此須要在編程上花一些功夫。報表的生成對於 R 來講是一個比較新的方向,因此它不如 SAS 來的簡單和快速。在 R 中,Sweave 和 Knitr 是報表這方面的領先的程序包,可是學習起來也比較困難。
 
重度報表使用用戶應該瞭解這些以上不一樣,儘管學習 SAS 的報表功能須要花費一些時間,可是一旦掌握了就頗有價值並有很高的靈活性。而從最基礎學習 R 的報表功能也許不須要像 SAS 那樣花那麼多時間。
 
結論
咱們能夠看到解決 R 與 SAS 的辯論是三合一的。
 
第一,就像在任何一個統計編程社區 同樣,咱們知道這個PK是沒有一個最終贏家。兩種軟件各有優缺點。他們有共存的必 要,而學術上的教學中,他們也有共存的必要。若是學生們可以明確他們的需求併合理的應 用,那樣會得到更好的效果。若是隻給學生教授一種軟件是有侷限性的,這樣會使他們難以 發揮學習另一種軟件的潛力。
 
第二,用戶們須要保持他們的工具箱與時俱進。SAS 和 R 都有一些很不錯的 學習網站去介紹 的技術上的進步。 SAS 技術支持網站http://support.sas.com 有許多的動態,如 Focus Areas、E-newsletters、RSS 種子和博客。R 博客網站 http://www.r-bloggers.com 包含了許多用戶貢獻的新聞和練習。
 
第三,最理想的是學習 兩種軟件並將其融合於分析中。這裏有許多方法能夠嘗試,例如用 SAS 的 IML 和 SAS 的 IML/Studio(IML 是 SAS 的一個加載項)功能,或者經過使用 SAS X Statement 執行外部命 令,使 R 代碼在 SAS 中轉化成 SAS 命令來運行。對於 R 的用戶們,經過轉化 R 到 SAS 的 用戶界面,能夠同時使用 2 種軟件。經過使用兩種軟件能夠使處理及分析數據變得事半功倍,並且使全部的用戶都滿意。
相關文章
相關標籤/搜索