首頁>Club>
7
回覆列表
  • 1 # 使用者440258199276

    對於R語言的真正使用者來說,R最大的問題不是慢,而是程式包的雜亂,嫌它慢的一開始就不會用R。我認為這個問題可以分為兩部分,一個是如何選擇自己需要的包,一個是如何學習這些包。我把程式包分為三類,第一種是功能增強型,比如zoo和ggplot2,他們的功能原本可以用繁瑣的程式碼實現,但是使用這些包可以實現的更快或者更好;第二種是統計建模型,專門為某個統計領域或模型而做的包,小到wavelet這種專門做小波分解的包,大到TSA這種所有經濟類專業都用的時間序列包都屬於這一類。第三種是特定功能型,這種包一般非常小眾,比如分解和製造音訊的tuneR(可以用它來聽股票價格的白噪聲哦),再比如我自己寫的用於dota2選人的RDota(R版本更新以後已經不能用了暫時懶得更新),這種包一定是要麼很專業要麼很娛樂,不太需要學習“R”,而是這個功能本身,這一類都不屬於下面討論的範疇。如何選擇自己需要的程式包?對於功能增強型包,我認為值得系統學習的只有ggplot2,其他的包應該是什麼時候用到,或者什麼時候見到,就什麼時候學。比如你需要處理時間序列了就會用到zoo,或者你上網課看到了什麼特定的功能很不錯,就留個印象,什麼時候需要了再回去翻。再比如你工作的時候覺得R慢,想知道怎麼提高R的效率,去谷歌一下"how to improve computing performance in R",就會搜到CRAN官方給出的一片文章CRAN Task View: High-Performance and Parallel Computing with R所以,見到什麼就記,需要什麼就搜就可以了,如果你按照R包下載量前10的包一個一個學,你可能其中90%的功能都用不到(沒錯就是90%,因為每個包裡都有很多犄角旮旯你用不到的功能)。ggplot2實在是太強大了,用熟悉以後哪怕是在matlab裡寫的程式我也把資料調到R裡畫圖,然而這個包很複雜,從幫助檔案裡你很難快速上手,因此需要系統學習。對於統計建模型的包,肯定是你聽說過哪個模型才會用哪個包呀,這個就不用我多說了吧。需要注意的是,有些模型在好幾個包裡都有,比如garch,請務必用兩個包都跑一下看看結果一不一樣,如果不一樣請老老實實用stata或者matlab去做。這是因為即使是下載量TOP10的包,也大多是個人所製作的,比如TSA,這些包裡有bug!有bug!有bug!比如我去年用TSA的時候就發現了兩個bug,都在底層的函數里不在最外層,一般使用者看到error肯定一臉懵逼。我甚至把改好的函式檔案發給了maintainer,maintainer表示感謝並且沒有更新這個包╭(╯^╰)╮第二個問題,如何學習R程式包。在回答這個問題之前,首先你需要對R的基本功能有了解,否則連就無從說起學包。學習R的基本功能最快餐的方法是上JHU那門著名網課r programming,這門課後面的幾門課也會學到很多有用的包。對於ggplot2,我強烈推薦買本書學,因為我學R的時候R還非常冷門網上資料太少,不過現在可能網上資源也多了吧。我用的書叫《R資料視覺化手冊》,真心好用。對於有些大包,他們是有官方網站的,上面有足夠詳細的教程,比如題主提到的quantmod,quantmod: Quantitative Financial Modelling Framework官網上有很多的example,按照example學。再比如機器學習包caret,上面的教程也足夠詳細The caret Package(不過對於小白,機器學習還是應該從e1071包學起)。對於流行的包,比如題主說道的zoo,你用百度都可以找到一大堆中文教程,跟著中文教程學就好了,主流功能都能學到。下面說一下不是那麼好找資料的包怎麼學:第一,看pdf版manual:我們在提交一個R包讓CRAN稽核的時候,package裡面是有一個pdf檔案的。這個檔案如果開發者懶,是由開發者為每個函式寫的description自動拼在一起的。但是如果開發者不懶,他會自己寫這個pdf檔案,讓這個檔案更親民一點。如果你要學習的包有這種檔案,這裡以程式包sandwich為例,在RStudio右下角的視窗找到你要學的包,點一下會看到這樣一個介面:這當中的user guides, package vignettes and other documentation裡面就會有開發者手動寫的檔案。跟著學就可以了。第二,如果沒有,那麼最簡單最快速的方法是快速找到主要函式,複製example部分的程式碼執行,檢視結果,再根據example程式碼修改成自己需要的程式碼。什麼是主要函式?比如randomForest這個包是做隨機森林模型的,那麼主要函式肯定就是那個叫randomForest的函式嘛!你不用擔心example的執行問題,在CRAN稽核的時候要求example程式碼需要在空白的環境下正常執行才可以,所以example一定是最標準的。當然了,這已經是最後的辦法了,針對的是不那麼流行,比較專業的小程式包。對於初學者大部分問題都可以透過上面的方法解決。感謝閱讀~

  • 2 # 52sissi

      大資料分析R語言是一種日益流行的程式語言,尤其是在資料分析和資料科學領域。但是,如果您不確定如何處理R語言,學習R語言可能會是一個令人沮喪的挑戰。

      如果您過去一直在努力學習R語言或其他程式語言,那麼您肯定並不孤單。這並不是您的失敗,也不是語言的某些固有問題。通常情況下,這是一個不匹配什麼之間的內容激發你學習和結果如何,你實際上是在學習。

      當您學習任何程式語言時,這種不匹配都會帶來很大的問題,因為它會將您直接帶到我們喜歡稱之為無聊的懸崖的地方。

      無聊的懸崖是什麼?在獲得好的東西之前,通常會遇到無聊的編碼語法和枯燥的實踐問題,而這正是您真正想要做的事情。

      沒有人註冊學習程式語言,因為他們喜歡語法。然而,從教科書到線上課程的許多學習資源都是以學生需要掌握R語言語法的所有關鍵領域才能真正使用它的想法編寫的。

      那是新學習者趨於成群結隊的地方。你感到興奮的學習一門程式語言,因為你想要做的東西與它,但你會立即導致這個龐大的複雜的牆,無聊的東西,你,你居然什麼之間是希望做的事情。毫不奇怪,很多學生在攀登“懸崖”時都會放棄或放棄。

      無法用R語言或任何其他程式語言來學習語法。但是,是為了避免枯燥的懸崖一種方式。

      如此可惜的是,這麼多的學生落在懸崖上,因為R語言絕對值得學習!實際上,對於對學習資料科學感興趣的任何人,R語言都比其他語言有很多優勢。其整潔的生態系統使各種日常資料科學任務變得非常簡單。R語言中的資料視覺化既簡單又非常強大。線上R語言社群是所有程式設計社群中最友好,包含最廣泛的社群之一。

      當然,學習R語言對於您的職業生涯可能非常有用。資料科學是一個發展迅速的領域,具有很高的平均薪水。大多數頂級科技公司僱用R語言編碼器來擔任與資料科學相關的工作。R語言在幾乎所有從事分析的行業中的全球公司中都在使用。那麼,如何才能避免無聊的懸崖,並以正確的方式學習R語言?

      1、找到學習R語言的動機

      在您破解教科書之前,註冊一個學習平臺,或者單擊您的第一個教學影片上的播放,花一些時間來認真考慮為什麼要學習R語言,以及您想如何使用它。您想使用哪種資料?您喜歡什麼樣的專案建設?您想回答什麼型別的問題?

      您的目標應該是找到在此過程中能夠激勵您的事情。這將幫助您定義最終目標,並且將幫助您輕鬆地實現最終目標。

      嘗試比“成為資料科學家”更深入。有各種各樣的資料科學家致力於各種各樣的問題和專案。您對語言分析感興趣嗎?計算機視覺?預測股市?深入研究體育統計?您想用新技能做什麼事情,以使您在學習R語言的過程中保持動力?

      選擇一兩個您感興趣並且願意堅持的東西。您將著重對他們的學習,並牢記這些。

      只需確保選擇您真正感興趣的東西即可。如果您選擇計算機視覺,這是行不通的,因為您聽說過它很有價值,但是實際上對執行這項工作並不感興趣。您的興趣是促使您繼續前進的動力,因此它必須是真實的。

      您無法完全避免學習語法“無聊的懸崖”,但可以將其變成更易於管理的“無聊之路”。

      2、學習基本語法

      不幸的是,沒有辦法完全避免這一步。語法是一種程式語言,比人類語言的語法甚至更重要。如果有人說“我要去商店”,那麼他們的英語語法是錯誤的,但是您可能仍然可以理解他們的意思。不幸的是,當計算機解釋您的程式碼時,它們的容忍度要低得多。

      但是,學習死記硬背語法很無聊,因此您的目標必須是花盡可能少的時間進行死記硬背語法學習,而在處理您感興趣的現實問題時儘可能多地學習語法。即使語法本身並不那麼令人興奮,也可以保持您的動力。

      以下是一些學習R語言基礎知識的資源:

      a.Codecademy-在教授基本語法方面做得很好。

      b.AAA教育:R語言程式設計簡介 —我們構建了AAA教育,透過即時整合現實世界資料和實際資料科學問題,幫助資料科學專業的學生避免無聊的懸崖。我們認為在處理實際問題的上下文中學習語法會使其變得更加有趣,並且我們的互動式平臺會挑戰您如何真正應用您所學的內容,並在進行過程中檢查您的工作。此課程也是完全免費的。

      c.R語言 foR語言 Data Science —可以從O"R語言eilly印刷或免費線上獲得的教科書。

      d.R語言樣式指南 -這不應該是您的主要學習資源,但可以作為有用的參考。

      我們不能太強調您應該花盡可能少的時間來學習死記硬背語法。您越快地從事專案工作,您就會學得越快。如果以後遇到問題,您總是可以參考各種資源來學習和仔細檢查語法。但是您的目標應該是最多在此階段花費幾個星期。

      儘快開始進行結構化資料科學專案的工作。

      3、開展結構化專案

      一旦掌握了足夠的語法,就可以更獨立地進行結構化專案了。專案是一種很好的學習方式,因為它們使您可以應用已學到的知識,同時通常還會挑戰您學習新事物並在解決過程中解決問題。此外,建設專案將幫助您整理投資組合,以便日後向未來的僱主展示。

      您可能現在還不想涉足完全獨特的專案。您會陷入很多麻煩,並且過程可能令人沮喪。而是尋找結構化的專案,直到您可以積累更多的經驗並提高舒適度為止。

      如果您選擇透過AAA教育學習R語言,那麼它將直接內置於我們的課程中-我們的每一門資料科學課程都以一個指導性專案結尾,該專案挑戰您綜合和應用所學知識。這些專案提供了一定的結構,因此您並不完全依靠自己,但是與常規課程內容相比,它們更具開放性,可讓您進行實驗,以新的方式綜合技能並犯錯誤。

      如果您不學習AAA教育,那麼還有許多其他結構化專案可供您進行研究。查詢有關Medium的R語言教程,該教程側重於您感興趣的主題,例如,並透過它進行學習。然後,嘗試將其擴充套件一點-您如何更深入或增加更多?

      4、自己構建專案

      一旦完成了一些結構化專案,您可能已經準備好進入學習R語言的下一個階段:做自己的獨特資料科學專案。除非您站出來嘗試自己做某事,否則很難知道您真正學到了多少。在您感興趣的獨特專案上進行工作,不僅會給您一個很好的主意,而且會帶給您一個很好的主意。

      而且,儘管您將構建自己的專案,但您不會一個人工作。在工作時,您仍將參考幫助和學習新技術和方法的資源。特別是對於R語言,您可能會發現有一個專用於幫助您正在處理的專案型別的軟體包,因此進行新專案有時也意味著您正在學習新的R語言軟體包。

      如果卡住了怎麼辦?做專業人士,並尋求幫助!這裡有一些很棒的資源,可以為您的R語言專案尋求幫助:

      a.StackOveR語言flow —無論您的問題是什麼,以前都可能在這裡問過,如果沒有,您可以自己問。您可以在此處找到標記為R語言的問題。

      b.Google –信不信由你,這可能是每個有經驗的程式設計師中最常用的工具。當您遇到不了解的錯誤時,對錯誤訊息的Google快速搜尋通常會帶您找到答案。

      c.AAA教育的學習社群 -使用免費的學生帳戶,您可以加入我們的學習社群,並提出您的同學或AAA教育的資料科學家可以回答的技術問題。

      您應該建立什麼樣的專案?與結構化專案一樣,這些專案應以您在第1步中得出的答案為指導。處理您感興趣的專案和問題。例如,如果您對氣候變化感興趣,請查詢一些可用於處理的氣候資料,然後開始四處尋找見解。

      最好從小規模開始,而不是嘗試進行一個永遠不會完成的龐大專案。如果您最感興趣的是一個龐大的專案,請嘗試將其分解成較小的部分並一次解決。

      以下是您可以考慮的一些專案創意:

      a.擴充套件您之前構建的結構化專案之一,以新增新功能或進行更深入的分析。

      b.參加聚會或線上與其他R語言編碼員聯絡,並加入一個正在進行的專案。

      c.找到一個有助於發展的開源軟體包(R語言有很多很棒的開源軟體包!)

      d.在Github上找到其他人用R語言製作的有趣專案,並嘗試對其進行擴充套件或擴充套件。或者找到其他人用另一種語言製作的專案,然後嘗試使用R語言重新建立它。

      e.閱讀新聞並尋找有趣的故事,這些故事可能具有您可以為專案挖掘的可用資料。

      f.檢視我們用於資料科學專案的免費資料集列表,看看有哪些可用資料激發您開始構建!

      您可以將專案視為一系列步驟,每個步驟都應將標準設定得更高一些,並且比之前的步驟更具挑戰性。

      5、加大難度

      在專案上工作很棒,但是如果您想學習R語言,那麼您需要確保繼續學習。例如,您可以使用foR語言迴圈來做很多事情,R語言的學習方法https://www.aaa-cg.com.cn/data/2295.html但這並不意味著您應該連續構建20個僅使用foR語言迴圈技巧的專案。每個專案都應該比上一個專案更艱難,更復雜。每個專案都應挑戰您學習以前不知道的東西。

      如果您不確定確切如何執行此操作,則可以問自己一些問題,以便對要考慮的任何專案應用更多的複雜性和難度:

      a.您可以教一個新手如何透過(例如)編寫教程來製作這個專案嗎?試圖教的東西給別人很快就會告訴你如何真正理解它,它更是出奇地挑戰!

      b.您可以擴大專案規模,使其可以處理更多資料嗎?還有更多資料嗎?

      c.您可以提高其效能嗎?它可以執行得更快嗎?

      d.您可以改善視覺化效果嗎?你能說清楚一點嗎?可以互動嗎?

      e.你可以預測嗎?

      永不停止學習R語言

      學習程式語言有點像學習第二種口語-您將達到舒適和流利的程度,但是您將永遠無法真正完成學習。甚至已經使用R語言多年的經驗豐富的資料科學家仍在學習新事物,因為語言本身在不斷髮展,新的軟體包使新事物始終存在。

      保持好奇心和繼續學習很重要,但不要忘記回頭欣賞一下您不時走的距離。

      即使您採用這種方法,學習R語言絕對是一個挑戰。但是,如果您找到合適的動力並保持自己從事有趣的專案,那麼我認為任何人都可以達到很高的水平。

      如果您正在尋找一個將這些課程直接整合到課程中的學習平臺,那麼您很幸運,因為我們建立了一個。我們的R語言路徑中的Data Analyst是一個互動式課程式列,旨在使從初學者到具備R語言和SQL資格的任何人。https://www.toutiao.com/i6828456065592459780/

  • 中秋節和大豐收的關聯?
  • 有兒子不去住,卻住女兒家的老人,過年還在女兒家過年合適嗎?