溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

R語(yǔ)言中相關(guān)的經(jīng)驗(yàn)有哪些

發(fā)布時(shí)間:2021-11-22 10:35:24 來(lái)源:億速云 閱讀:109 作者:柒染 欄目:大數(shù)據(jù)

這篇文章給大家介紹R語(yǔ)言中相關(guān)的經(jīng)驗(yàn)有哪些,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

R中function相關(guān)的一些分享

正文:

  1. function的本質(zhì)是文本替換


  2. function可以在R中無(wú)處不在,如之前文章提到的read_excel()和write.csv,又如base中自帶的mean()和median()等,這些統(tǒng)統(tǒng)都是function。所以function可以理解為是為了解決某一問(wèn)題或者某一系列問(wèn)題而打包好的一系列語(yǔ)句。感覺(jué)就如中學(xué)數(shù)學(xué)中的幾元幾次方程,輸入x值就會(huì)得到特定的y值。


  3. function的來(lái)源主要分兩個(gè)。

    一個(gè)是別人寫(xiě),即存在與base中或者是其他package中別人已經(jīng)寫(xiě)好的函數(shù)。

    另一個(gè)是自己寫(xiě)的,也叫自定義function,可以根據(jù)自己的實(shí)際要解決的問(wèn)題,針對(duì)性的寫(xiě)一個(gè)滿(mǎn)足個(gè)人特定需求的一段代碼并打包在function語(yǔ)句中,生成自己的function。如何自己寫(xiě)一個(gè)function,以及寫(xiě)出來(lái)function能解決問(wèn)題的水平,和function本身的語(yǔ)法句法內(nèi)容,一定程度上可以反應(yīng)或者檢驗(yàn)當(dāng)下編寫(xiě)者的代碼水平。


  4. function的語(yǔ)法組成,固定語(yǔ)句+參數(shù)們+解決問(wèn)題的代碼們。就分這三大部分,需要研究是第二和第三部分。


  5. 如何寫(xiě)一個(gè)自定義function。大概分以下幾個(gè)步驟:

    第一,明確寫(xiě)function的目的。有沒(méi)有替代方法,是否真正需要自定函數(shù)來(lái)解決問(wèn)題。考慮性?xún)r(jià)比,是否真正的有必要去自己花時(shí)間開(kāi)發(fā)一段代碼,有沒(méi)有各位神仙前輩已經(jīng)就類(lèi)似的問(wèn)題開(kāi)發(fā)了不錯(cuò)的包可以直接調(diào)用。等等。再確認(rèn)確實(shí)需要寫(xiě)之后,那就開(kāi)始開(kāi)發(fā)代碼吧,其實(shí)過(guò)程是很快樂(lè)的。


    第二,寫(xiě)function的思路。分而治之,各個(gè)擊破,再一統(tǒng)山河。問(wèn)題通常都沒(méi)有那么復(fù)雜,之所以變得很復(fù)雜一般是因?yàn)樗悸繁容^混亂。可以將問(wèn)題拆分,分別去解決實(shí)現(xiàn),最終整合結(jié)果就ok了。如果反而把問(wèn)題變得更復(fù)雜,就屬于本末倒置,得不償失了。


    第三,寫(xiě)function的步驟。大體如下,

    1:  就寫(xiě)一段可以解決目標(biāo)問(wèn)題的代碼,即“硬”代碼。

    2:對(duì)代碼進(jìn)行精簡(jiǎn),提煉。

    3:對(duì)“硬”代碼中的關(guān)鍵data或者variable用參數(shù)代替,實(shí)現(xiàn)文本替換。

    4:對(duì)生成的自定義function小范圍測(cè)試。

    5:根據(jù)實(shí)際環(huán)境,模擬可能遇到的真實(shí)情景,大規(guī)模測(cè)試function的彈性和效果,并微調(diào)。


    第四:需要注意的事項(xiàng)。

    1:盡可能的少用循環(huán),循環(huán)會(huì)拉低運(yùn)行效率,尤其是數(shù)據(jù)量很大的時(shí)候,會(huì)慢的感人。

    2:盡可能精簡(jiǎn)語(yǔ)句,減少冗余代碼,不要拐彎抹角,這樣對(duì)自己或者對(duì)于閱讀代碼的人都好。

    3:可以嘗試在代碼中調(diào)用其他package中的函數(shù),提高效率,事半功倍,站在巨人肩膀上看得更遠(yuǎn)。

    4:如果考慮未來(lái)的可擴(kuò)展性,盡量在編寫(xiě)的過(guò)程中就留足余地,中間步驟避免使用一些硬文本,盡量使用可以自動(dòng)運(yùn)行得到結(jié)果的代碼。

    5:參數(shù)要精而優(yōu),設(shè)置前需三思。

就像SAS大佬們瘋狂開(kāi)發(fā)自己macro一樣,R大佬們也在瘋狂開(kāi)發(fā)自己function。大佬們的世界總是那么瘋狂。

關(guān)于R語(yǔ)言中相關(guān)的經(jīng)驗(yàn)有哪些就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI